Bagaimana untuk Menggunakan Retriever dalam LangChain?

Bagaimana Untuk Menggunakan Retriever Dalam Langchain



LangChain ialah rangka kerja yang membolehkan pembangun membina Model Bahasa Besar (LLM) yang boleh digunakan untuk berinteraksi dengan manusia. Mesin perlu mempelajari bahasa manusia untuk berinteraksi dengan mereka menggunakan LangChain kerana ia menyediakan semua perpustakaan dan kebergantungan yang diperlukan untuk membina model ini.

Siaran ini akan menunjukkan proses menggunakan retriever dalam LangChain.

Bagaimana untuk Menggunakan Retriever dalam LangChain?

Retriever bertindak sebagai antara muka antara model dan manusia supaya mereka boleh menggunakannya untuk mendapatkan output yang diingini menggunakan input yang disediakan dalam bahasa semula jadi. Stor vektor digunakan untuk menyimpan data yang boleh digunakan untuk mendapatkan/mengekstrak maklumat/data daripada.







Walau bagaimanapun, retriever adalah lebih umum daripada pangkalan data ini. Mereka tidak menyimpan sebarang data dan hanya digunakan untuk mendapatkan atau mendapatkan semula data untuk pengguna. Untuk mempelajari proses membina dan menggunakan retriever melalui LangChain, lihat langkah berikut:



Langkah 1: Pasang Modul
Mula-mula, pasang modul yang diperlukan seperti LangChain untuk mendapatkan perpustakaan dan kebergantungannya untuk meneruskan proses:



pip pasang langchain





Pasang kedai vektor chromadb yang boleh digunakan untuk data pangkalan data untuk retriever mengambil data dari kedai:

pip pasang chromadb



Sekarang, pasang rangka kerja OpenAI untuk mendapatkan perpustakaannya untuk menggunakan pembenaman teks sebelum membina retriever:

pip pasang openai

Selepas memasang semua modul yang diperlukan, hanya sediakan persekitaran menggunakan kunci API OpenAI:

import kami
import getpass

os.environ [ 'OPENAI_API_KEY' ] = getpass.getpass ( 'OpenAI API Key:' )

Langkah 2: Muat Naik Set Data
Sekarang, laksanakan kod berikut untuk mengklik pada “Pilih Fail” butang dan muat naik dokumen atau fail daripada sistem setempat:

daripada fail import google.colab
dimuat naik = files.upload ( )

Langkah 3: Import Perpustakaan
Import perpustakaan yang diperlukan untuk membina dan menggunakan retriever dalam LangChain seperti “ Senaraikan ',' Panggilan balik ', dan banyak lagi:

dari abc import ABC, abstractmethod
daripada menaip import Mana-mana, Senarai
daripada langchain.schema import Document
daripada langchain.callbacks.manager import Callbacks

Langkah 4: Buat Penciptaan Indeks Satu Baris
Langkah ini mencipta indeks untuk retriever yang boleh digunakan untuk mendapatkan data untuk membentuk stor vektor dengan mengimport perpustakaan yang diperlukan:

daripada langchain.chains import RetrievalQA
daripada langchain.llms import OpenAI

Di sini, muatkan data menggunakan TextLoader() kaedah dengan laluan fail yang dimuat naik dalam langkah 2:

import TextLoader daripada langchain.document_loaders
pemuat = TextLoader ( 'state_of_the_union.txt' , pengekodan = 'utf8' )

Import perpustakaan VectorstoreIndexCreator dari LangChain untuk membina indeks untuk pangkalan data:

import VectorstoreIndexCreator daripada langchain.indexes

Takrifkan indeks pembolehubah menggunakan kaedah VectorstoreIndexCreator() menggunakan kaedah pemuat pembolehubah:

indeks = VectorstoreIndexCreator ( ) .daripada_pemuat ( [ pemuat ] )

Gunakan pertanyaan untuk menguji indeks dengan mengambil data daripada dokumen:

pertanyaan = 'Apa yang dikatakan oleh presiden Zelenskyy dalam ucapannya'
indeks.pertanyaan ( pertanyaan )

Dapatkan butiran indeks tentang pangkalan data yang mempunyai indeks menggunakan kod berikut:

index.vectorstore

Kod berikut akan menerangkan semua butiran tentang indeks, jenisnya dan pangkalan data:

index.vectorstore.as_retriever ( )

Gunakan kaedah indeks dengan query() meminta ringkasan dokumen menggunakan hujah sumber untuk menggunakan nama dokumen:

indeks.pertanyaan ( 'Ringkasan umum data daripada dokumen ini' , retriever_kwargs = { 'search_kwargs' : { 'penapis' : { 'sumber' : 'state_of_the_union.txt' } } } )

Langkah 5: Buat Pembenaman
Muatkan dokumen untuk mencipta pembenamannya dan simpan teks dalam bentuk berangka menggunakan stor vektor:

dokumen = loader.load ( )

Mulakan proses membenam menggunakan text_splitter dengan saiz ketulan dan hujah bertindih:

daripada langchain.text_splitter import CharacterTextSplitter
#using text_splitter untuk mencipta cebisan kecil dokumen untuk digunakan retriever
text_splitter = CharacterTextSplitter ( saiz_ketulan = 1000 , chunk_overlap = 0 )
teks = text_splitter.split_documents ( dokumen )

Gunakan kaedah OpenAIEmbeddings() yang boleh diimport dari LangChain:

daripada langchain.embeddings import OpenAIEmbeddings
embeddings = OpenAIEembeddings ( )

Gunakan kedai chromadb untuk menyimpan benam yang dibuat daripada dokumen:

daripada langchain.vectorstores import Chroma
db = Chroma.from_documents ( teks, benam )

Langkah 6: Uji Retriever
Setelah pembenaman dibuat dan disimpan dalam pangkalan data, hanya tentukan pembolehubah retriever:

retriever = db.as_retriever ( )

Panggil rantai menggunakan kaedah RetrievalQA() dengan fungsi OpenAI() dan retriever sebagai hujahnya:

qa = RetrievalQA.from_chain_type ( llm =OpenAI ( ) , rantai_jenis = 'barang' , retriever = retriever )

Berikan input untuk menguji retriever menggunakan pertanyaan pembolehubah di dalam kaedah qa.run():

pertanyaan = 'Apa yang dikatakan oleh presiden Zelenskyy dalam ucapannya'
qa.run ( pertanyaan )

Hanya menyesuaikan VectorstoreIndexCreator () menggunakan hujahnya untuk menetapkan nilai yang berbeza:

index_creator = VectorstoreIndexCreator (
vectorstore_cls =Kroma,
membenamkan =OpenAIEmbeddings ( ) ,
text_splitter =CharacterTextSplitter ( saiz_ketulan = 1000 , chunk_overlap = 0 )
)

Itu semua tentang proses bermula dengan retriever dalam LangChain.

Kesimpulan

Untuk menggunakan retriever dalam LangChain, cuma pasang kebergantungan yang diperlukan untuk menyediakan persekitaran OpenAI dan kemudian muat naik dokumen untuk menguji retriever. Selepas itu, bina retriever menggunakan kelas asas abstrak atau perpustakaan ABC dan kemudian buat indeks untuk pangkalan data untuk mendapatkan semula data. Konfigurasikan pembenaman untuk dokumen dan jalankan retriever untuk mendapatkan hasil yang setanding daripada pangkalan data. Catatan ini telah menghuraikan proses penggunaan retriever dalam LangChain.