Cu o cantitate mică de cod și câteva biblioteci utile, puteți construi acest instrument puternic de analiză a documentelor.

Extragerea informațiilor din documente și date este crucială în luarea unor decizii informate. Cu toate acestea, problemele legate de confidențialitate apar atunci când se ocupă de informații sensibile. LangChain, în combinație cu API-ul OpenAI, vă permite să analizați documentele locale fără a fi nevoie să le încărcați online.

Ei reușesc acest lucru prin păstrarea datelor dvs. la nivel local, folosind înglobări și vectorizare pentru analiză și executând procese în mediul dumneavoastră. OpenAI nu utilizează datele trimise de clienți prin intermediul API-ului lor pentru a-și instrui modelele sau pentru a-și îmbunătăți serviciile.

Configurarea mediului

Creați un nou mediu virtual Python. Acest lucru va asigura că nu există conflicte de versiuni de bibliotecă. Apoi rulați următoarea comandă de terminal pentru a instala bibliotecile necesare.

pip install langchain openai tiktoken faiss-cpu pypdf
instagram viewer

Iată o detaliere a modului în care veți folosi fiecare bibliotecă:

  • LangChain: îl veți folosi pentru crearea și gestionarea lanțurilor lingvistice pentru procesarea și analiza textului. Acesta va oferi module pentru încărcarea documentelor, împărțirea textului, încorporare și stocare vectorială.
  • OpenAI: îl veți folosi pentru a rula interogări și pentru a obține rezultate dintr-un model de limbă.
  • tiktoken: îl veți folosi pentru a număra numărul de jetoane (unități de text) dintr-un text dat. Acest lucru este pentru a urmări numărul de jetoane atunci când interacționați cu API-ul OpenAI, care se taxează în funcție de numărul de jetoane pe care le utilizați.
  • FAISS: îl veți folosi pentru a crea și gestiona un magazin de vectori, permițând recuperarea rapidă a vectorilor similari pe baza înglobărilor lor.
  • PyPDF: Această bibliotecă extrage text din PDF-uri. Ajută la încărcarea fișierelor PDF și extrage textul acestora pentru procesare ulterioară.

După ce toate bibliotecile sunt instalate, mediul dumneavoastră este acum gata.

Obținerea unei chei API OpenAI

Când faceți solicitări către API-ul OpenAI, trebuie să includeți o cheie API ca parte a solicitării. Această cheie permite furnizorului de API să verifice dacă solicitările provin dintr-o sursă legitimă și că aveți permisiunile necesare pentru a accesa funcțiile sale.

Pentru a obține o cheie API OpenAI, treceți la Platforma OpenAI.

Apoi, sub profilul contului dvs. din dreapta sus, faceți clic pe Vedeți cheile API. The Chei API va apărea pagina.

Faceți clic pe Creați un nou secretcheie buton. Denumiți-vă cheia și faceți clic pe Creați o nouă cheie secretă. OpenAI va genera cheia dvs. API pe care ar trebui să o copiați și să o păstrați undeva în siguranță. Din motive de securitate, nu îl veți putea vizualiza din nou prin contul dvs. OpenAI. Dacă pierdeți această cheie secretă, va trebui să generați una nouă.

Codul sursă complet este disponibil în a Depozitul GitHub.

Importarea bibliotecilor necesare

Pentru a putea folosi bibliotecile instalate în mediul dumneavoastră virtual, trebuie să le importați.

from langchain.document_loaders import PyPDFLoader, TextLoader
from langchain.text_splitter import CharacterTextSplitter
from langchain.embeddings.openai import OpenAIEmbeddings
from langchain.vectorstores import FAISS
from langchain.chains import RetrievalQA
from langchain.llms import OpenAI

Observați că importați bibliotecile de dependențe din LangChain. Acest lucru vă permite să utilizați caracteristici specifice ale cadrului LangChain.

Încărcarea documentului pentru analiză

Începeți prin a crea o variabilă care să dețină cheia dvs. API. Veți folosi această variabilă mai târziu în cod pentru autentificare.

# Hardcoded API key
openai_api_key = "Your API key"

Nu este recomandat să codificați cheia API dacă intenționați să partajați codul cu terțe părți. Pentru codul de producție pe care doriți să îl distribuiți, utilizați în schimb o variabilă de mediu.

Apoi, creați o funcție care încarcă un document. Funcția ar trebui să încarce un PDF sau un fișier text. Dacă documentul nu este niciunul, funcția ar trebui să genereze a ValueError.

defload_document(filename):
if filename.endswith(".pdf"):
loader = PyPDFLoader(filename)
documents = loader.load()
elif filename.endswith(".txt"):
loader = TextLoader(filename)
documents = loader.load()
else:
raise ValueError("Invalid file type")

După încărcarea documentelor, creați un CharacterTextSplitter. Acest separator va împărți documentele încărcate în bucăți mai mici pe baza caracterelor.

 text_splitter = CharacterTextSplitter(chunk_size=1000, 
chunk_overlap=30, separator="\n")

return text_splitter.split_documents(documents=documents)

Împărțirea documentului asigură că bucățile au o dimensiune ușor de gestionat și sunt încă conectate cu un context care se suprapun. Acest lucru este util pentru sarcini precum analiza textului și regăsirea informațiilor.

Interogarea documentului

Aveți nevoie de o modalitate de a interoga documentul încărcat pentru a obține informații din acesta. Pentru a face acest lucru, creați o funcție care necesită a interogare sfoară și a copoi ca intrare. Apoi creează un RecuperareQA exemplu folosind copoi și o instanță a modelului de limbaj OpenAI.

defquery_pdf(query, retriever):
qa = RetrievalQA.from_chain_type(llm=OpenAI(openai_api_key=openai_api_key),
chain_type="stuff", retriever=retriever)
result = qa.run(query)
print(result)

Această funcție folosește instanța QA creată pentru a rula interogarea și pentru a imprima rezultatul.

Crearea funcției principale

Funcția principală va controla fluxul general al programului. Va necesita intrarea utilizatorului pentru un nume de fișier de document și va încărca acel document. Apoi creați un OpenAIEmbeddings exemplu pentru înglobări și construcție a magazin de vectori pe baza documentelor încărcate şi înglobări. Salvați acest magazin de vectori într-un fișier local.

Apoi, încărcați stocul de vectori persistent din fișierul local. Apoi introduceți o buclă în care utilizatorul poate introduce interogări. The principal funcția transmite aceste interogări către interogare_pdf funcția împreună cu retriever-ul magazinului de vectori persistente. Bucla va continua până când utilizatorul intră în „ieșire”.

defmain():
filename = input("Enter the name of the document (.pdf or .txt):\n")
docs = load_document(filename)
embeddings = OpenAIEmbeddings(openai_api_key=openai_api_key)
vectorstore = FAISS.from_documents(docs, embeddings)
vectorstore.save_local("faiss_index_constitution")
persisted_vectorstore = FAISS.load_local("faiss_index_constitution", embeddings)
query = input("Type in your query (type 'exit' to quit):\n")

while query != "exit":
query_pdf(query, persisted_vectorstore.as_retriever())
query = input("Type in your query (type 'exit' to quit):\n")

Înglobările captează relațiile semantice dintre cuvinte. Vectorii sunt o formă în care puteți reprezenta bucăți de text.

Acest cod convertește datele text din document în vectori folosind înglobările generate de OpenAIEmbeddings. Apoi indexează acești vectori folosind FAISS, pentru regăsirea și compararea eficientă a vectorilor similari. Acesta este ceea ce permite analiza documentului încărcat.

În cele din urmă, folosiți constructul __name__ == „__main__”. pentru a apela funcția principală dacă un utilizator rulează programul independent:

if __name__ == "__main__":
main()

Această aplicație este o aplicație de linie de comandă. Ca extensie, puteți utilizați Streamlit pentru a adăuga o interfață web la aplicație.

Efectuarea analizei documentelor

Pentru a efectua analiza documentelor, stocați documentul pe care doriți să îl analizați în același folder ca și proiectul dvs., apoi rulați programul. Acesta va cere numele documentului pe care doriți să îl analizați. Introduceți numele complet, apoi introduceți interogări pentru ca programul să le analizeze.

Captura de ecran de mai jos arată rezultatele analizei unui PDF.

Următoarea ieșire arată rezultatele analizei unui fișier text care conține cod sursă.

Asigurați-vă că fișierele pe care doriți să le analizați sunt fie în format PDF, fie în format text. Dacă documentele dvs. sunt în alte formate, puteți convertiți-le în format PDF folosind instrumente online.

Înțelegerea tehnologiei din spatele modelelor lingvistice mari

LangChain simplifică crearea de aplicații folosind modele mari de limbaj. Acest lucru înseamnă, de asemenea, că abstractizează ceea ce se întâmplă în culise. Pentru a înțelege exact cum funcționează aplicația pe care o creați, ar trebui să vă familiarizați cu tehnologia din spatele modelelor mari de limbaj.