Cara Menggunakan Embeddings dalam LangChain

Cara Menggunakan Embeddings Dalam Langchain



Pembenaman ialah indeks perkaitan rentetan teks dan dinyatakan oleh vektor (senarai) integer titik terapung. Jarak antara dua vektor berfungsi sebagai ukuran sejauh mana hubungannya rapat; semakin kecil jarak, semakin rapat perkaitan. Kelas LangChain Embedding bertujuan untuk berfungsi sebagai antara muka untuk perkhidmatan benam seperti OpenAI, HuggingFace dan lain-lain.

Dua kaedah, embed_query() dan embed_documents(), disediakan oleh kelas asas. Yang pertama ini beroperasi pada satu dokumen, manakala yang satu lagi boleh beroperasi pada banyak dokumen.

Artikel ini memahami demonstrasi praktikal pembenaman dalam LangChain menggunakan pembenaman teks OpenAI.







Contoh: Mendapatkan Teks Input Tunggal Menggunakan Pembenaman Teks OpenAI

Untuk ilustrasi pertama, kami memasukkan rentetan teks tunggal dan mendapatkan semula pembenaman teks OpenAI untuknya. Program ini bermula dengan memasang perpustakaan yang diperlukan.



Perpustakaan pertama yang perlu kami pasang ke dalam projek kami ialah LangChain. Ia tidak disertakan dengan perpustakaan standard Python jadi kami perlu memasangnya secara berasingan. Memandangkan langchain tersedia di PyPi, kami boleh memasangnya dengan mudah menggunakan arahan pip pada terminal. Oleh itu, kami menjalankan arahan berikut untuk memasang perpustakaan LangChain:



$ pip pasang langchain

Perpustakaan dipasang sebaik sahaja keperluan dipenuhi.





Kami juga memerlukan perpustakaan OpenAI untuk dipasang dalam projek kami supaya kami boleh mengakses model OpenAI. Pustaka ini boleh dirasmikan dengan menulis arahan pip:

$ pip pasang openai

Kini, kedua-dua perpustakaan yang diperlukan dipasang ke dalam fail projek kami. Kami perlu mengimport modul yang diperlukan.



daripada langchain. benam . openai import OpenAIEmbeddings

import awak

awak . lebih kurang [ 'OPENAI_API_KEY' ] = 'sk-YOUR_API_KEY”

Untuk mendapatkan benam OpenAI, kami perlu mengimport kelas OpenAIEmbeddings daripada pakej 'langchain.embeddings.openai'. Kemudian, kami menetapkan kunci API sebagai pembolehubah persekitaran. Kami memerlukan kunci API rahsia untuk mengakses model OpenAI yang berbeza. Kunci ini boleh dijana daripada platform OpenAI. Hanya daftar dan dapatkan kunci rahsia daripada bahagian 'lihat kunci rahsia' profil anda. Kunci ini boleh digunakan merentas projek yang berbeza untuk pelanggan tertentu.

Pembolehubah persekitaran digunakan untuk menyimpan kunci API untuk persekitaran tertentu dan bukannya pengekodan keras ke dalam fungsi. Jadi, untuk menetapkan kunci API sebagai pembolehubah persekitaran, kita perlu mengimport modul 'os'. Kaedah os.environ() digunakan untuk menetapkan kunci API sebagai pembolehubah persekitaran. Ia mengandungi nama dan nilai. Nama yang kami tetapkan ialah 'OPENAI_API_KEY' dan kunci rahsia ditetapkan kepada 'nilai'.

model = OpenAIEmbeddings ( )

input_text = 'Ini untuk demonstrasi.'

hasil = model. embed_query ( input_text )

cetak ( hasil )

cetak ( sahaja ( hasil ) )

Kami sudah bersambung dengan pembungkus pembenaman OpenAI. Selepas itu, kami memanggil pembina kelas OpenAIEmbedding. OpenAI menyediakan pelbagai model benam tetapi anda perlu membayarnya. Di sini, kita menggunakan model pembenaman lalai OpenAI, iaitu text-embedding-ada-002, yang percuma. Apabila anda tidak memberikan sebarang nama model sebagai parameter, model lalai digunakan.

Kemudian, kami menentukan teks yang kami perlukan untuk mendapatkan pembenaman. Teks ditentukan sebagai 'Ini adalah untuk demonstrasi.' dan simpannya dalam pembolehubah input_text. Selepas itu, kaedah embed_query() untuk membenamkan teks yang disediakan dipanggil dengan model yang digunakan dan input_text yang mempunyai rentetan teks untuk mendapatkan semula pembenaman yang disediakan sebagai parameter. Pembenaman yang diambil diberikan kepada objek hasil.

Akhir sekali, untuk meletakkan hasil pada paparan, kami mempunyai kaedah print() Python. Kita hanya perlu lulus objek yang menyimpan nilai yang kita mahu paparkan kepada kaedah print(). Oleh itu, kami menggunakan fungsi ini dua kali; pertama untuk memaparkan senarai nombor terapung dan kedua untuk mencetak panjang nilai ini menggunakan kaedah len() dengannya.

Senarai nilai terapung boleh dilihat dalam petikan berikut dengan panjang nilai ini:

Contoh: Mendapatkan Teks/Dokumen Input Berbilang Menggunakan Pembenaman Teks OpenAI

Selain daripada mendapatkan pembenaman untuk teks input tunggal, kami juga boleh mendapatkannya untuk berbilang rentetan input. Kami melaksanakan ini ke dalam ilustrasi ini.

Kami telah memasang perpustakaan dalam ilustrasi sebelumnya. Pustaka lain yang perlu kami pasang di sini ialah perpustakaan tiktoken Python. Tulis arahan pada terminal untuk memasangnya:

$ pip pasang tiktoken

Pakej tiktoken ialah tokenizer Pengekodan Pasangan Byte. Ia digunakan dengan model OpenAI dan memecahkan teks kepada token. Ini digunakan kerana rentetan yang disediakan kadangkala agak panjang untuk model OpenAI yang ditentukan. Jadi, ia membahagikan teks dan mengekodnya menjadi token. Sekarang, mari kita kerjakan projek utama.

daripada langchain. benam . openai import OpenAIEmbeddings

model = OpenAIEmbeddings ( openai_api_key = 'sk-YOUR_API_KEY”

rentetan = ['
ini ialah untuk demonstrasi. ',' ini tali ialah juga untuk demonstrasi. ',' ini ialah satu lagi demo tali . ',' Yang ini ialah terakhir tali . ']

hasil = model.embed_documents(strings)

cetak(hasil)

cetak(len(hasil))

Kelas OpenAIEmbeddings diimport daripada pakej 'langchain.embeddings.openai'. Dalam contoh sebelumnya, kami menetapkan kunci API sebagai pembolehubah persekitaran. Tetapi untuk yang ini, kami menyampaikannya terus kepada pembina. Jadi, kita tidak perlu mengimport modul 'os' di sini.

Selepas menggunakan model OpenAI iaitu OpenAIEmbeddings, kami menyerahkan kunci API rahsia kepadanya. Dalam baris seterusnya, rentetan teks ditentukan. Di sini, kami menyimpan empat rentetan teks dalam rentetan objek. Rentetan ini ialah 'Ini untuk tunjuk cara', 'Rentetan ini juga untuk tunjuk cara', 'Ini rentetan tunjuk cara lain', dan 'Rentetan ini ialah rentetan terakhir.'

Anda boleh menentukan berbilang rentetan dengan hanya memisahkan setiap rentetan dengan koma. Dalam contoh sebelumnya, kaedah embed_text() dipanggil tetapi kami tidak boleh menggunakannya di sini kerana ia hanya berfungsi untuk rentetan teks tunggal. Untuk membenamkan berbilang rentetan, kaedah yang kami ada ialah embed_document(). Jadi, kami memanggilnya dengan model OpenAI yang ditentukan dan rentetan teks sebagai hujah. Output disimpan dalam objek hasil. Akhir sekali, untuk memaparkan output, kaedah Python print() digunakan dengan hasil objek sebagai parameternya. Selain itu, kami ingin melihat panjang nilai terapung ini. Oleh itu, kami menggunakan kaedah len() dalam kaedah print().

Output yang diambil disediakan dalam imej berikut:

Kesimpulan

Siaran ini membincangkan konsep embedding dalam LangChain. Kami mempelajari apa itu pembenaman dan cara ia berfungsi. Pelaksanaan praktikal untuk membenamkan rentetan teks ditunjukkan di sini. Kami menjalankan dua ilustrasi. Contoh pertama berfungsi untuk mendapatkan semula pembenaman rentetan teks tunggal dan contoh kedua memahami cara mendapatkan pembenaman berbilang rentetan input menggunakan model pembenaman OpenAI.