Heim > Technologie-Peripheriegeräte > KI > Implementieren Sie die Generierung von Suchverbesserungen basierend auf Langchain, ChromaDB und GPT 3.5

Implementieren Sie die Generierung von Suchverbesserungen basierend auf Langchain, ChromaDB und GPT 3.5

王林
Freigeben: 2023-09-14 14:21:11
nach vorne
1642 Leute haben es durchsucht

„Übersetzer“ | Generation)

Aufforderungen Engineering-Technologie und werden auf einer Kombination aus Langchain, ChromaDB und GPT 3.5

basieren, um diese Technologie zu implementieren

.

MotivationMit dem Aufkommen transformatorbasierter Big-Data-Modelle wie GPT-3 hat der Bereich der Verarbeitung natürlicher Sprache (NLP) große Durchbrüche erzielt. Diese Sprachmodelle sind in der Lage, menschenähnlichen Text zu generieren und verfügen bereits über eine Vielzahl von Anwendungen wie Chatbots, Inhaltsgenerierung und Übersetzung usw. . Wenn es jedoch um betriebliche Anwendungsszenarien von Fach- und kundenspezifischen Informationen geht, können herkömmliche Sprachmodelle

die

Anforderungen nicht erfüllen

. Andererseits die Feinabstimmung dieser Modelle mithilfe neuer Korpora kann teuer und zeitaufwändig sein. Um dieser Herausforderung zu begegnen, können wir eine Technik namens Retrieval Augmented Generation (RAG: Retrieval Augmented Generation) verwenden. In diesem Blog werden wir untersuchen, wie diese Retrieval Enhanced Generation (RAG) -Technologie funktioniert. und bestehen Sie ein Real-Life

Anhand von

Kampfbeispielen wird 基于Langchain、ChromaDB和GPT 3.5实现检索增强生成

die

Wirksamkeit dieser Technologie nachgewiesen. Es ist zu beachten, dass in diesem Beispiel GPT-3.5 Turbo als zusätzlicher Korpus verwendet wird, um auf das Produkthandbuch zu reagieren. Stellen Sie sich vor, Sie haben die Aufgabe, einen Chatbot zu entwickeln, der auf Fragen zu einem bestimmten Produkt antworten kann. Das Produkt verfügt über ein eigenes, einzigartiges Benutzerhandbuch, speziell für Unternehmensprodukte. Herkömmliche Sprachmodelle wie GPT-3 werden häufig anhand allgemeiner Daten trainiert und verstehen dieses spezifische Produkt möglicherweise nicht. Andererseits scheint die Feinabstimmung des Modells mithilfe eines neuen Korpus eine Lösung zu sein ; dieser Ansatz wird jedoch erhebliche Kosten- und Ressourcenanforderungen mit sich bringen. Einführung in Retrieval Augmented Generation (RAG) Retrieval Augmented Generation (RAG) bietet eine effizientere Möglichkeit, das Problem der Generierung geeigneter kontextbezogener Antworten in einer bestimmten Domäne zu lösen. Anstatt ein neues Korpus zur Feinabstimmung des gesamten Sprachmodells zu verwenden, nutzt RAG die Fähigkeit des Abrufs, um bei Bedarf auf relevante Informationen zuzugreifen. Durch die Kombination von Abrufmechanismen mit Sprachmodellen nutzt RAG den externen Kontext, um die Antworten zu verbessern. Dieser externe Kontext kann als Vektoreinbettung bereitgestellt werden

Die folgenden Schritte werden zum Erstellen der Anwendung in diesem Artikel beschrieben.

  1. Lesen Sie das Clarett-Benutzerhandbuch (PDFFormat) und tokenisieren Sie es mit chunk_size von 1000 Token.
  2. Erstellen Sie Vektoreinbettungen dieser Markierungen. Wir werden die OpenAIEmbeddings-Bibliothek verwenden, um Vektoreinbettungen zu erstellen.
  3. speichert die Vektoreinbettung lokal. Wir werden die einfache ChromaDB als VectorDB verwenden. Wir können Pinecone oder jede andere höher verfügbare Produktionsqualität Vektordatenbank VectorDB verwenden.
  4. Benutzer posten Tipps mit Fragen/Fragen.
  5. Dadurch wird in VectorDB gesucht und abgerufen, um bequem mehr Kontextdaten von VectorDB zu erhalten.
  6. Diese Kontextdaten werden nun mit dem Prompt-Inhalt verwendet.
  7. Kontexterweiterte Eingabeaufforderungen
  8. , Dies wird oft als kontexterweiterte Eingabeaufforderungen bezeichnet. Die
  9. Eingabeaufforderungsinformationen
  10. werden nun zusammen mit der Abfrage/Frage und diesem erweiterten Kontext , an das große Sprachmodell LLM übergeben.
  11. An dieser Stelle antwortet
  12. LLM basierend auf diesem Kontext.
Es ist zu beachten, dass wir in diesem Beispiel

das Focusrite Clarett-Benutzerhandbuch als zusätzlichen Korpus verwenden werden. Focusrite Clarett ist ein einfaches USB-Audio-Interface zum Aufnehmen und Abspielen von Audio. Sie können es über den -Link https://fael-downloads-prod.focusrite.com/customer/prod/downloads/Clarett%208Pre%20USB%20User%20Guide%20V2%20English%20-%20EN.pdf herunterladen Benutzerhandbuch. 🔜 das kann im System vorkommen Versions-/Bibliotheks-/Abhängigkeitskonflikt. Jetzt führen wir den folgenden Befehl aus

, um

eine

neue virtuelle Python-Umgebung zu erstellen :

pip install virtualenvpython3 -m venv ./venvsource venv/bin/activate 
Nach dem Login kopieren
OpenAI-Schlüssel erstellen Als nächstes benötigen wir eine OpenAI Schlüssel für den Zugriff auf GPT. Lassen Sie uns einen OpenAI-Schlüssel erstellen. Sie können kostenlos einen OpenAIKey erstellen, indem Sie sich unter Link https://platform.openai.com/apps für OpenAI registrieren. Melden Sie sich nach der Registrierung an und wählen Sie die API-Option aus, wie im Screenshot gezeigt (Aus zeitlichen Gründen kann es sein, dass das Bildschirmdesign beim Öffnen dieses nicht mit mir übereinstimmt Derzeit

Machen Sie Screenshots

mit Änderungen).

Gehen Sie dann zu Ihren Kontoeinstellungen und wählen Sie „API-Schlüssel anzeigen“: Dann wählen Sie „Neuen Schlüssel erstellen“ (Erstellen neuer geheimer Schlüssel )“ wird ein Popup-Fenster wie unten gezeigt angezeigt. Sie müssen einen Namen angeben und dadurch wird ein Schlüssel generiert.

基于Langchain、ChromaDB和GPT 3.5实现检索增强生成

Diese Aktion generiert einen eindeutigen Schlüssel, den Sie in Ihre Zwischenablage kopieren und an einem sicheren Ort

aufbewahren sollten 基于Langchain、ChromaDB和GPT 3.5实现检索增强生成

.

Als nächstes schreiben wir Python-Code, um alle im obigen Flussdiagramm gezeigten Schritte zu implementieren. Abhängigkeitsbibliotheken installierenZunächst

installieren wir die verschiedenen Abhängigkeiten, die wir benötigen. Wir werden die folgenden Bibliotheken verwenden: 基于Langchain、ChromaDB和GPT 3.5实现检索增强生成

  • Lanchain一个开发LLM应用程序的框架。
  • ChromaDB:这是用于持久化向量嵌入的VectorDB。
  • unstructured:用于预处理Word/PDF文档。
  • TiktokenTokenizer框架
  • pypdf:阅读和处理PDF文档的框架
  • openai:访问openai的框架
pip install langchainpip install unstructuredpip install pypdfpip install tiktokenpip install chromadbpip install openai
Nach dem Login kopieren

一旦成功安装了这些依赖项,请创建一个环境变量来存储在最后一步中创建的OpenAI密钥。

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

接下来,让我们开始编程。

从用户手册PDF创建向量嵌入并将其存储在ChromaDB中

在下面的代码中,我们会引入所有需要使用的依赖库和函数

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

在下面的代码中,阅读PDF,将文档标记化并拆分为标记。

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

在下面的代码中,我们将创建一个色度集合,一个用于存储色度数据库的本地目录。然后我们创建一个向量嵌入并将其存储在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

执行此代码后,您应该会看到创建了一个存储向量嵌入的文件夹。

基于Langchain、ChromaDB和GPT 3.5实现检索增强生成

现在我们将向量嵌入存储在ChromaDB中。下面,让我们使用LangChain中的ConversationalRetrievalChain API来启动聊天历史记录组件。我们将传递由GPT 3.5 Turbo启动的OpenAI对象和我们创建的VectorDB。我们将传递ConversationBufferMemory,它用于存储消息。

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

既然我们已经初始化了会话检索链,那么接下来我们就可以使用它进行聊天/问答了。在下面的代码中,我们接受用户输入(问题),直到用户键入“done”然后,我们将问题传递给LLM以获得回复并打印出来。

chat_history = []qry = ""while qry != 'done': qry = input('Question: ') if qry != exit: response = chatQA({"question": qry, "chat_history": chat_history}) print(response["answer"])
Nach dem Login kopieren

这是输出的屏幕截图。

基于Langchain、ChromaDB和GPT 3.5实现检索增强生成

基于Langchain、ChromaDB和GPT 3.5实现检索增强生成

小结

正如你从本文中所看到的,检索增强生成是一项伟大的技术,它将GPT-3等语言模型的优势与信息检索的能力相结合。通过使用特定于上下文的信息丰富输入,检索增强生成使语言模型能够生成更准确和与上下文相关的响应。在微调可能不实用的企业应用场景中,检索增强生成提供了一种高效、经济高效的解决方案,可以与用户进行量身定制、知情的交互。

译者介绍

朱先忠是51CTO社区的编辑,也是51CTO专家博客和讲师。他还是潍坊一所高校的计算机教师,是自由编程界的老兵

原文标题:Prompt Engineering: Retrieval Augmented Generation(RAG),作者:A B Vijay Kumar


Das obige ist der detaillierte Inhalt vonImplementieren Sie die Generierung von Suchverbesserungen basierend auf Langchain, ChromaDB und GPT 3.5. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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