Rumah >Peranti teknologi >AI >Laksanakan penjanaan peningkatan carian berdasarkan Langchain, ChromaDB dan GPT 3.5

Laksanakan penjanaan peningkatan carian berdasarkan Langchain, ChromaDB dan GPT 3.5

王林
王林ke hadapan
2023-09-14 14:21:111651semak imbas

Penterjemah | 🎜#重楼|. Dalam blog ini, kita akan belajar tentang The prompt

teknologi kejuruteraan yang dipanggil retrieval augmented generation, dan

#🎜 # akan berdasarkan #🎜🎜 Gabungan #Langchain, ChromaDB dan GPT 3.5

untuk melaksanakan teknologi ini

. motivasiDengan GPT-3 dan penukar berasaskan lain #bigdata#🎜🎜🎜 #Kemunculan model telah membuat penemuan besar dalam bidang pemprosesan bahasa semula jadi (NLP). Model bahasa ini mampu menjana teks seperti manusia dan mempunyai pelbagai aplikasi seperti chatbots, penjanaan kandungan dan terjemahan 🎜🎜#wait. Walau bagaimanapun, apabila ia berkaitan dengan senario aplikasi perusahaan dengan maklumat khusus dan khusus pelanggan, model bahasa tradisional mungkin tidak mencukupi 🎜🎜#tidak dapat memenuhi permintaan . Sebaliknya, penalaan halus model ini menggunakan korpora baharu boleh menjadi mahal dan memakan masa. Untuk menangani cabaran ini, kita boleh menggunakan teknik yang dipanggil Retrieval Augmented Generation (RAG: Retrieval Augmented Generation).

Dalam blog ini, kita akan membincangkan ##🎜🎜 #Ini jenisRetrieval enhancement generasi(RAG)))#🎜 Bagaimana teknologi berfungsi, dan dibuktikan melalui contoh kehidupan sebenar The #🎜🎜 keberkesanan teknologi ini. Perlu diambil perhatian bahawa contoh ini menggunakan GPT-3.5 Turbo sebagai korpus tambahan untuk Manual produk bertindak balas.

基于Langchain、ChromaDB和GPT 3.5实现检索增强生成Bayangkan tugas anda adalah untuk membangunkan chatbot,

thebot#🎜🎜 # boleh menjawab pertanyaan tentang produk tertentu. Produk ini mempunyai manual pengguna tersendiri, khusus untuk produk perusahaan. Model bahasa tradisional, seperti GPT-3, sering dilatih mengenai data umum dan mungkin tidak memahami produk khusus ini. Sebaliknya, Menggunakan korpus baharu untuk memperhalusi model nampaknya merupakan penyelesaian namun, pendekatan ini#; 🎜🎜 # Akan membawa keperluan kos dan sumber yang besar. Pengenalan kepada Retrieval Enhanced Generation (RAG)Retrieval Enhanced Generation menyediakan lebih banyak Retrieval Enhanced Generation (RAG) kaedah untuk menyelesaikan masalah menjana tindak balas kontekstual yang sesuai dalam domain tertentu. Daripada menggunakan korpus baharu untuk memperhalusi keseluruhan model bahasa, RAG menggunakan kuasa mendapatkan semula untuk mengakses maklumat yang berkaitan atas permintaan. Dengan menggabungkan mekanisme perolehan semula dengan model bahasa, RAG memanfaatkan konteks luaran untuk meningkatkan respons. Konteks luaran ini boleh disediakan sebagai pembenaman vektor 🎜🎜# Ketahui langkah-langkah untuk untuk diikuti semasa membuat aplikasi .

  1. Baca Manual Pengguna Clarett (PDFFormat) dan tokenize menggunakan chunk_size 1000 token.
  2. Buat pembenaman vektor penanda ini. Kami akan menggunakan perpustakaan OpenAIEmbeddings untuk mencipta pembenaman vektor .
  3. menyimpan pembenaman vektor secara tempatan. Kami akan menggunakan ChromaDB ringkas sebagai VectorDB kami. Kami boleh menggunakan Pinecone atau mana-mana gred pengeluaran ketersediaan yang lebih tinggi pangkalan data vektor VectorDB.
  4. Pengguna menyiarkan petua dengan pertanyaan/soalan.
  5. Ini akan mencari dan mendapatkan semula dari VectorDB ke dengan mudah mendapatkan lebih banyak data kontekstual daripada Vector
  6. Data kontekstual ini kini akan digunakan dengan kandungan gesaan .
  7. Gesaan dipertingkatkan konteks , Ini sering dipanggil diperkaya konteks. Maklumat
  8. gesaan, bersama-sama dengan pertanyaan/soalan dan konteks yang dipertingkatkan ini , kini dihantar ke model bahasa besar LL
  9. Pada ketika ini, LLM bertindak balas berdasarkan konteks ini.

Perlu diingatkan bahawa dalam contoh ini, kami akan menggunakan Manual Pengguna Focusrite Clarett sebagai korpus tambahan. Focusrite Clarett ialah antara muka audio USB yang ringkas untuk merakam dan memainkan audio. Anda boleh memuat turunnya dari pautan https://fael-downloads-prod.focusrite.com/customer/prod/downloads/Clarett%208Pre%20USB%20User%20Guide%20V2%20English%20-%20EN.pdf Manual pengguna. . yang mungkin berlaku dalam sistem Konflik versi/perpustakaan/pergantungan.

Sekarang, kami

melaksanakan arahan berikut

untuk

mencipta sebuah kunci persekitaran maya Python baharu : Creee Seterusnya, kita akan memerlukan An Kunci OpenAI untuk mengakses GPT. Mari buat kunci OpenAI. Anda boleh mencipta OpenAIKey secara percuma dengan mendaftar untuk OpenAI di pautan https://platform.openai.com/apps. selepas mendaftar, log masuk dan pilih pilihan API seperti yang ditunjukkan dalam tangkapan skrin (due ke masa, apabila anda membuka reka bentuk skrin

ini

mungkin tidak sepadan me Pada masa iniambil tangkapan skrin

dengan perubahan). Menah, pergi ke tetapan akaun anda dan pilih "Lihat Kekunci API": Then, Pilih "Buat Kekunci Baru" (Buat Kunci Rahsia Baru )

”, anda akan melihat tetingkap timbul seperti yang ditunjukkan di bawah. 基于Langchain、ChromaDB和GPT 3.5实现检索增强生成

Anda perlu

memberikan nama dan ini akan akan

menjana kunci.

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

Tindakan ini akan menjana kunci unik yang perlu anda salin ke papan keratan anda dan simpan di tempat yang selamat .

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

, mari kita tulis kod Python untuk melaksanakan semua langkah yang ditunjukkan dalam carta alir di atas.

Pasang perpustakaan kebergantunganMula-mula, mari pasang pelbagai kebergantungan yang kita perlukan. Kami akan menggunakan perpustakaan berikut:

基于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

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

export OPENAI_API_KEY=<openai-key></openai-key>

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

从用户手册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

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

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

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

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

基于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)

既然我们已经初始化了会话检索链,那么接下来我们就可以使用它进行聊天/问答了。在下面的代码中,我们接受用户输入(问题),直到用户键入“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"])

这是输出的屏幕截图。

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

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

小结

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

译者介绍

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

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


Atas ialah kandungan terperinci Laksanakan penjanaan peningkatan carian berdasarkan Langchain, ChromaDB dan GPT 3.5. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:51cto.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam