Heim > Technologie-Peripheriegeräte > KI > Verbesserung der Engineering-Effizienz – Enhanced Search Generation (RAG)

Verbesserung der Engineering-Effizienz – Enhanced Search Generation (RAG)

王林
Freigeben: 2023-10-14 20:17:01
nach vorne
1468 Leute haben es durchsucht

Mit dem Aufkommen groß angelegter Sprachmodelle wie GPT-3 wurden große Durchbrüche auf dem Gebiet der Verarbeitung natürlicher Sprache (NLP) erzielt. Diese Sprachmodelle verfügen über die Fähigkeit, menschenähnlichen Text zu generieren, und werden häufig in verschiedenen Szenarien wie Chatbots und Übersetzungen eingesetzt.

Verbesserung der Engineering-Effizienz – Enhanced Search Generation (RAG)

Wenn es jedoch um spezielle und benutzerdefinierte Anwendungsszenarien geht, sind allgemeine, große Sprachmodelle möglicherweise vorhanden Mangel an Fachwissen sein. Die Feinabstimmung dieser Modelle mit speziellen Korpora ist oft teuer und zeitaufwändig. „Retrieval Enhanced Generation“ (RAG) bietet eine neue Technologielösung für professionelle Anwendungen.​ ​ ​

Verbesserung der Engineering-Effizienz – Enhanced Search Generation (RAG)

Im Folgenden stellen wir hauptsächlich die Funktionsweise von RAG vor und verwenden ein praktisches Beispiel, um das Produkthandbuch als professionelles Korpus zu verwenden und GPT-3.5 Turbo als Frage- und Antwortmodell zu verwenden, um seine Wirksamkeit zu überprüfen.

Fall: Entwickeln Sie einen Chatbot, der Fragen zu einem bestimmten Produkt beantworten kann. Dieses Unternehmen verfügt über ein einzigartiges Benutzerhandbuch

Einführung in RAG

RAG bietet eine effektive Lösung für domänenspezifische Fragen und Antworten. Es wandelt hauptsächlich Branchenwissen in Vektoren zum Speichern und Abrufen um, kombiniert die Abrufergebnisse mit Benutzerfragen, um zeitnahe Informationen zu bilden, und verwendet schließlich große Modelle, um geeignete Antworten zu generieren. Durch die Kombination des Abrufmechanismus und des Sprachmodells wird die Reaktionsfähigkeit des Modells erheblich verbessert

Die Schritte zum Erstellen eines Chatbot-Programms sind wie folgt:

  1. Lesen Sie das PDF (PDF-Datei des Benutzerhandbuchs) und tokenisieren Sie es mit chunk_size von 1000 Token .
  2. Erstellen Sie Vektoren (Sie können OpenAI EmbeddingsAPI verwenden, um Vektoren zu erstellen).
  3. Speichern Sie Vektoren in der lokalen Vektorbibliothek. Als Vektordatenbank verwenden wir ChromaDB (die Vektordatenbank kann auch durch Pinecone oder andere Produkte ersetzt werden).
  4. Benutzer posten Tipps mit Fragen/Fragen.
  5. Rufen Sie Wissenskontextdaten aus der Vektordatenbank basierend auf den Fragen des Benutzers ab. Diese Wissenskontextdaten werden in den folgenden Schritten in Verbindung mit den Stichworten verwendet, um die Stichworte zu verbessern, was oft als kontextuelle Anreicherung bezeichnet wird.
  6. Das Eingabewort, das die Benutzerfrage enthält, wird zusammen mit erweitertem Kontextwissen an das LLM übergeben.
  7. LLM-Antworten basierend auf diesem Kontext.

Praktische Entwicklung

(1) Richten Sie eine virtuelle Python-Umgebung ein. Richten Sie eine virtuelle Umgebung ein, um unser Python zu sandboxen, um Versions- oder Abhängigkeitskonflikte zu vermeiden. Führen Sie den folgenden Befehl aus, um eine neue virtuelle Python-Umgebung zu erstellen.

需要重写的内容是:pip安装virtualenv,python3 -m venv ./venv,source venv/bin/activate
Nach dem Login kopieren

Der Inhalt, der neu geschrieben werden muss, ist: (2) OpenAI-Schlüssel generieren

Für die Verwendung von GPT ist ein OpenAI-Schlüssel für den Zugriff erforderlich

Verbesserung der Engineering-Effizienz – Enhanced Search Generation (RAG)

Der Inhalt, der neu geschrieben werden muss, ist: (3) Abhängige Bibliotheken installieren

Verschiedene vom Installer benötigte Abhängigkeiten. Enthält die folgenden Bibliotheken:

  • lanchain: ein Framework für die Entwicklung von LLM-Anwendungen.
  • chromaDB: Dies ist VectorDB für dauerhafte Vektoreinbettungen.
  • unstrukturiert: wird zur Vorverarbeitung von Word-/PDF-Dokumenten verwendet.
  • tiktoken: Tokenizer-Framework
  • pypdf: Ein Framework zum Lesen und Verarbeiten von PDF-Dokumenten.
  • openai: Greifen Sie auf das OpenAI-Framework zu.
pip install langchainpip install unstructuredpip install pypdfpip install tiktokenpip install chromadbpip install openai
Nach dem Login kopieren

Erstellen Sie eine Umgebungsvariable zum Speichern des OpenAI-Schlüssels.

export OPENAI_API_KEY=<openai-key></openai-key>
Nach dem Login kopieren

(4) Konvertieren Sie die PDF-Datei des Benutzerhandbuchs in einen Vektor und speichern Sie sie in ChromaDB.

Importieren Sie alle abhängigen Bibliotheken und Funktionen, die Sie benötigen, um

import osimport openaiimport tiktokenimport chromadbfrom langchain.document_loaders import OnlinePDFLoader, UnstructuredPDFLoader, PyPDFLoaderfrom langchain.text_splitter import TokenTextSplitterfrom langchain.memory import ConversationBufferMemoryfrom langchain.embeddings.openai import OpenAIEmbeddingsfrom langchain.vectorstores import Chromafrom langchain.llms import OpenAIfrom langchain.chains import ConversationalRetrievalChain
Nach dem Login kopieren

zum Lesen von PDF, zum Tokenisieren des Dokuments und zum Teilen des Dokuments zu verwenden.

loader = PyPDFLoader("Clarett.pdf")pdfData = loader.load()text_splitter = TokenTextSplitter(chunk_size=1000, chunk_overlap=0)splitData = text_splitter.split_documents(pdfData)
Nach dem Login kopieren

Erstellen Sie eine Chroma-Sammlung und ein lokales Verzeichnis zum Speichern von Chroma-Daten. Erstellen Sie dann einen Vektor (Einbettungen) und speichern Sie ihn in ChromaDB.

collection_name = "clarett_collection"local_directory = "clarett_vect_embedding"persist_directory = os.path.join(os.getcwd(), local_directory)openai_key=os.environ.get('OPENAI_API_KEY')embeddings = OpenAIEmbeddings(openai_api_key=openai_key)vectDB = Chroma.from_documents(splitData,embeddings,collection_name=collection_name,persist_directory=persist_directory)vectDB.persist()
Nach dem Login kopieren

Nachdem Sie diesen Code ausgeführt haben, sollten Sie einen Ordner sehen, der zum Speichern der Vektoren erstellt wurde.

Verbesserung der Engineering-Effizienz – Enhanced Search Generation (RAG)

Nachdem die Vektoreinbettung in ChromaDB gespeichert wurde, können Sie die ConversationalRetrievalChain-API in LangChain verwenden, um eine Chat-Verlaufskomponente zu starten. Im folgenden Code wird eine vom Benutzer eingegebene Frage akzeptiert, und nachdem der Benutzer „Fertig“ eingegeben hat, wird die Frage an LLM übergeben, um die Antwort abzurufen und auszudrucken.

memory = ConversationBufferMemory(memory_key="chat_history", return_messages=True)chatQA = ConversationalRetrievalChain.from_llm(OpenAI(openai_api_key=openai_key, temperature=0, model_name="gpt-3.5-turbo"), vectDB.as_retriever(), memory=memory)
Nach dem Login kopieren

Verbesserung der Engineering-Effizienz – Enhanced Search Generation (RAG)

Verbesserung der Engineering-Effizienz – Enhanced Search Generation (RAG)

Kurz gesagt

RAG vereint die Vorteile von Sprachmodellen wie GPT mit den Vorteilen des Information Retrieval. Durch die Nutzung spezifischer Wissenskontextinformationen zur Erweiterung der Fülle an Aufforderungswörtern ist das Sprachmodell in der Lage, genauere, wissenskontextbezogene Antworten zu generieren. RAG bietet eine effizientere und kostengünstigere Lösung als „Feinabstimmung“ und bietet anpassbare interaktive Lösungen für Industrieanwendungen oder Unternehmensanwendungen

Das obige ist der detaillierte Inhalt vonVerbesserung der Engineering-Effizienz – Enhanced Search Generation (RAG). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:51cto.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage