Bagaimana Menggabungkan Agen dan Toko Vektor di LangChain?

Bagaimana Menggabungkan Agen Dan Toko Vektor Di Langchain



LangChain adalah kerangka kerja yang mendesain model bahasa. Data dalam jumlah besar melatih model ini dalam bahasa alami. Ada banyak database atau penyimpanan vektor seperti Chroma, dll. untuk mengelola kumpulan data ini. Dengan menggabungkan agen dan penyimpanan vektor, model berperforma lebih baik dengan data dari domain berbeda. LangChain memungkinkan penggunaan banyak penyimpanan vektor untuk melatih model bahasa atau chatbot.

Garis Besar Singkat

Posting ini akan menunjukkan:







Cara Menggunakan Agen untuk Mengembalikan Output Terstruktur di LangChain



Metode 1: Menggabungkan Agen dengan Penyimpanan Vektor



Metode 2: Menggunakan Agen sebagai Router





Metode 3: Menggunakan Agen Dengan Penyimpanan Vektor Multi-Hop

Kesimpulan



Bagaimana Cara Menggunakan Agen untuk Mengembalikan Output Terstruktur di LangChain?

Pengembang menggunakan agen untuk merutekan antar database yang berisi data pelatihan untuk model. Agen memiliki cetak biru proses lengkap dengan menyimpan semua langkahnya. Agen memiliki alat untuk melakukan semua aktivitas ini untuk menyelesaikan proses. Pengguna juga dapat menggunakan agen untuk mendapatkan data dari penyimpanan data yang berbeda untuk membuat model menjadi beragam.

Untuk mempelajari proses menggabungkan agen dan penyimpanan vektor di LangChain, cukup ikuti langkah-langkah berikut:

Langkah 1: Menginstal Kerangka

Pertama, instal modul LangChain dan dependensinya untuk menggabungkan agen dan penyimpanan vektor:

pip instal langchain

Dalam panduan ini, kami menggunakan database Chroma yang dapat menyimpan data di lokasi atau tabel berbeda:

pip instal chromedb

Untuk mendapatkan pemahaman yang lebih baik tentang data, bagi file besar menjadi beberapa bagian yang lebih kecil menggunakan tokenizer tiktoken:

pip instal tiktoken

OpenAI adalah modul yang dapat digunakan untuk membangun model bahasa besar dalam kerangka LangChain:

pip instal openai

Langkah 2: Lingkungan OpenAI

Langkah selanjutnya di sini adalah mengatur lingkungan menggunakan kunci API OpenAI yang dapat diekstraksi dari akun resmi OpenAI:

impor Anda
impor dapatkan pass

Anda . sekitar [ 'OPENAI_API_KEY' ] = dapatkan pass . dapatkan pass ( 'Kunci API OpenAI:' )

Sekarang, unggah data dari sistem lokal ke kolaborasi Google untuk digunakan di masa mendatang:

dari google. DAN AL impor file

diunggah = file. mengunggah ( )

Langkah 3: Membuat Toko Vektor

Langkah ini mengonfigurasi komponen pertama tugas kita yaitu penyimpanan vektor untuk menyimpan data yang diunggah. Mengonfigurasi penyimpanan vektor memerlukan pustaka yang dapat diimpor dari berbagai dependensi LangChain:

dari rantailang. penyematan . terbuka impor OpenAIEmbeddings

#Vector menyimpan ketergantungan untuk mendapatkan database atau vektor yang diperlukan

dari rantailang. toko vektor impor Kroma

#Pemisah teks digunakan untuk mengubah teks besar menjadi potongan-potongan kecil

dari rantailang. pemisah_teks impor Pemisah Teks Karakter

dari rantailang. llms impor OpenAI

dari rantailang. document_loaders impor WebBaseLoader

dari rantailang. rantai impor PengambilanQA


llm = OpenAI ( suhu = 0 )

Langkah 4: Menetapkan Jalur

Setelah mengimpor perpustakaan, cukup atur jalur untuk mengakses penyimpanan vektor sebelum menyimpan data di dalamnya:

dari pathlib impor Jalur

bagian_relevan = [ ]
untuk P di dalam Jalur ( '.' ) . mutlak ( ) . bagian :
bagian_relevan. menambahkan ( P )
jika bagian_relevan [ - 3 : ] == [ 'rantai panjang' , 'dokumen' , 'modul' ] :
merusak
#Pernyataan Kondisional di dalam loop untuk mengatur jalur untuk setiap database
doc_path = str ( Jalur ( *bagian_relevan ) / 'state_of_the_union.txt' )

Langkah 5: Memuat & Memisahkan Data

Sekarang, cukup muat data dan bagi menjadi beberapa bagian yang lebih kecil agar lebih mudah dibaca dan dipahami. Buat penyematan data dengan mengonversi teks menjadi angka dengan membuat ruang vektornya dan menyimpannya di database Chorma:

dari rantailang. document_loaders impor Pemuat Teks

#Memuat kumpulan data dari jalurnya dan menyimpan potongan yang lebih kecil di database

pemuat = Pemuat Teks ( doc_path )

dokumen = pemuat. memuat ( )

pemisah_teks = Pemisah Teks Karakter ( potongan_ukuran = 2000 , potongan_tumpang tindih = 0 )

teks = pemisah_teks. split_documents ( dokumen )

#Ubah teks menjadi angka dan simpan penyematannya di database

penyematan = OpenAIEmbeddings ( )

pencarian dokumen = Kroma. dari_dokumen ( teks , penyematan , nama_koleksi = 'negara kesatuan' )

Langkah 6: Membuat Retriever

Untuk menggabungkan agen dan penyimpanan vektor, diperlukan pembuatan retriever menggunakan metode RetrievalQA() dari framework LangChain. Metode pengambilan ini direkomendasikan untuk mendapatkan data dari penyimpanan vektor dengan menggunakan agen sebagai alat untuk bekerja dengan database:

keadaan_of_union = PengambilanQA. dari_rantai_tipe (

llm = llm , tipe_rantai = 'hal-hal' , mengambil = pencarian dokumen. sebagai_retriever ( )

)

Muat himpunan data lain untuk mengintegrasikan agen dengan beberapa himpunan data atau penyimpanan vektor:

pemuat = WebBaseLoader ( 'https://beta.ruff.rs/docs/faq/' )

Simpan kumpulan data ruff di chromedb setelah membuat potongan data yang lebih kecil dengan vektor penyematan juga:

dokumen = pemuat. memuat ( )
ruff_texts = pemisah_teks. split_documents ( dokumen )
ruff_db = Kroma. dari_dokumen ( ruff_texts , penyematan , nama_koleksi = 'kasar' )
ruff = PengambilanQA. dari_rantai_tipe (
llm = llm , tipe_rantai = 'hal-hal' , mengambil = ruff_db. sebagai_retriever ( )
)

Metode 1: Menggabungkan Agen dengan Penyimpanan Vektor

Metode pertama yang menggabungkan agen dan penyimpanan vektor untuk mengekstrak informasi disebutkan di bawah:

Langkah 1: Konfigurasikan Alat

Sekarang setelah penyimpanan vektor dikonfigurasi, lanjutkan ke pembuatan komponen kedua dari proses kita, yaitu agen. Untuk membuat agen untuk proses tersebut, impor perpustakaan menggunakan dependensi seperti agen, alat, dll.

dari rantailang. agen impor inisialisasi_agent
dari rantailang. agen impor Tipe Agen
#Mendapatkan Alat dari LangChain untuk membangun agen
dari rantailang. peralatan impor Alat Dasar
dari rantailang. llms impor OpenAI
#Mendapatkan LLMMathChain dari rantai untuk membangun model bahasa
dari rantailang. rantai impor LLMMathChain
dari rantailang. keperluan impor SerpAPIWrapper
dari rantailang. agen impor Alat

Konfigurasikan alat yang akan digunakan dengan agen menggunakan sistem QA atau pengambilan yang dikonfigurasi sebelumnya dengan nama dan deskripsi alat:

peralatan = [
Alat (
nama = 'Sistem QA Negara Bagian' ,
fungsi = keadaan_of_union. berlari ,
keterangan = 'Memberikan tanggapan terhadap pertanyaan terkait kumpulan data yang dimuat dengan masukan sebagai pertanyaan yang terbentuk sepenuhnya' ,
) ,
Alat (
nama = 'Sistem QA Ruff' ,
fungsi = ruff. berlari ,
keterangan = 'Memberikan tanggapan terhadap pertanyaan tentang ruff (a python linter) dengan masukan sebagai pertanyaan yang terbentuk sepenuhnya' ,
) ,
]

Langkah 2: Inisialisasi Agen

Setelah alat dikonfigurasi, cukup atur agen dalam argumen metode inisialisasi_agent(). Agen yang kami gunakan disini adalah NOL_SHOT_REACT_DESCRIPTION beserta alatnya, llm (model bahasa), dan verbose:

agen = inisialisasi_agent (

peralatan , llm , agen = Tipe Agen. NOL_SHOT_REACT_DESCRIPTION , bertele-tele = BENAR

)

Langkah 3: Uji Agen

Cukup jalankan agen menggunakan metode run() yang berisi pertanyaan dalam argumennya:

agen. berlari (

'Apa yang Presiden Joe Biden katakan tentang kanji coklat dalam pidatonya'

)

Tangkapan layar berikut menampilkan jawaban yang diambil dari kedua penyimpanan data menggunakan observasi yang disimpan dalam memori agen:

Metode 2: Menggunakan Agen sebagai Router

Cara lain untuk menggabungkan kedua komponen tersebut adalah dengan menggunakan agen sebagai router dan berikut penjelasan prosesnya:

Langkah 1: Konfigurasikan Alat

Menggunakan agen sebagai router berarti sistem RetrievalQA akan mengembalikan keluaran secara langsung saat alat dikonfigurasi untuk mengembalikan keluaran secara langsung:

peralatan = [
#mengonfigurasi alat yang diperlukan untuk membangun agen untuk mendapatkan data dari data
Alat (
nama = 'Sistem QA Negara Bagian' ,
fungsi = keadaan_of_union. berlari ,
keterangan = 'Memberikan respon terhadap pertanyaan terkait dataset yang dimuat dengan input sebagai pertanyaan lengkap' ,
kembali_langsung = BENAR ,
) ,
Alat (
nama = 'Sistem QA Ruff' ,
fungsi = ruff. berlari ,
keterangan = 'Memberikan respon terhadap pertanyaan tentang ruff (a python linter) dengan input sebagai pertanyaan lengkap' ,
kembali_langsung = BENAR ,
) ,
]

Langkah 2: Inisialisasi dan Uji Agen

Setelah menyetel alat, cukup atur agen yang hanya dapat digunakan sebagai router menggunakan metode inisialisasi_agent():

agen = inisialisasi_agent (

peralatan , llm , agen = Tipe Agen. NOL_SHOT_REACT_DESCRIPTION , bertele-tele = BENAR

)

Uji agen dengan memberikan pertanyaan masukan pada metode agent.run() dengan menjalankan perintah berikut:

agen. berlari (

'Apa yang Presiden Joe Biden katakan tentang kanji coklat dalam pidatonya'

)

Keluaran

Tangkapan layar keluaran menunjukkan bahwa agen baru saja mengembalikan jawaban atas pertanyaan dari kumpulan data yang diekstraksi oleh sistem RetrievalQA:

Metode 3: Menggunakan Agen Dengan Penyimpanan Vektor Multi-Hop

Metode ketiga di mana pengembang dapat menggabungkan agen dan penyimpanan vektor adalah untuk kueri penyimpanan vektor multi-hop. Bagian berikut menjelaskan proses lengkapnya:

Langkah 1: Konfigurasikan Alat

Langkah pertama, seperti biasa, adalah konfigurasi alat yang digunakan untuk membangun agen guna mengekstrak data dari penyimpanan data:

peralatan = [
Alat (
nama = 'Sistem QA Negara Bagian' ,
fungsi = keadaan_of_union. berlari ,
keterangan = 'Memberikan respons terhadap pertanyaan terkait kumpulan data yang dimuat dengan masukan sebagai pertanyaan lengkap, tidak merujuk pada kata ganti apa pun dari percakapan sebelumnya' ,
) ,
Alat (
nama = 'Sistem QA Ruff' ,
fungsi = ruff. berlari ,
keterangan = 'Memberikan respons terhadap pertanyaan terkait kumpulan data yang dimuat dengan masukan sebagai pertanyaan lengkap, tidak merujuk pada kata ganti apa pun dari percakapan sebelumnya' ,
) ,
]

Langkah 2: Inisialisasi dan Uji Agen

Setelah itu, build variabel agen menggunakan metode inisialisasi_agent() dengan nama agen:

agen = inisialisasi_agent (

peralatan , llm , agen = Tipe Agen. NOL_SHOT_REACT_DESCRIPTION , bertele-tele = BENAR

)

Jalankan agen menggunakan pertanyaan multi-hop yang berisi lebih dari satu aspek atau fitur karena blok kode berikut berisi pertanyaan seperti itu:

agen. berlari (

'Alat apa yang digunakan ruff untuk menjalankan buku catatan Python dan apakah ada pembicara yang menyebutkan alat tersebut di alamatnya'

)

Keluaran

Tangkapan layar berikut menunjukkan bahwa agen harus mengerjakan pertanyaan untuk memahami kompleksitasnya. Ini telah mengembalikan jawaban yang diekstraksi oleh sistem QA dari beberapa penyimpanan data yang kami unggah sebelumnya dalam proses:

Sekian tentang cara menggabungkan agen dan penyimpanan vektor di LangChain.

Kesimpulan

Untuk menggabungkan agen dengan penyimpanan vektor di LangChain, mulailah dengan instalasi modul untuk menyiapkan lingkungan dan memuat kumpulan data. Konfigurasikan penyimpanan vektor untuk memuat data dengan membaginya menjadi bagian-bagian yang lebih kecil terlebih dahulu, lalu buat model bahasa menggunakan metode OpenAI(). Konfigurasikan agen untuk mengintegrasikannya dengan penyimpanan vektor guna mengekstrak data untuk berbagai jenis kueri. Artikel ini telah menguraikan proses penggabungan agen dan penyimpanan vektor di LangChain.