Cara Menggunakan Embedding di LangChain

Cara Menggunakan Embedding Di Langchain



Penyematan adalah indeks keterkaitan string teks dan diekspresikan oleh vektor (daftar) bilangan bulat floating point. Jarak antara dua vektor berfungsi sebagai ukuran seberapa dekat hubungannya; semakin kecil jaraknya, semakin dekat keterkaitannya. Kelas Penyematan LangChain dimaksudkan untuk berfungsi sebagai antarmuka untuk layanan penyematan seperti OpenAI, HuggingFace, dan lainnya.

Dua metode, embed_query() dan embed_documents(), disediakan oleh kelas dasar. Yang pertama beroperasi pada satu dokumen, sedangkan yang lain dapat beroperasi pada banyak dokumen.

Artikel ini memahami demonstrasi praktis penyematan di LangChain menggunakan penyisipan teks OpenAI.







Contoh: Memperoleh Teks Input Tunggal Menggunakan Penyematan Teks OpenAI

Untuk ilustrasi pertama, kami memasukkan satu string teks dan mengambil teks OpenAI yang disematkan untuknya. Program dimulai dengan menginstal pustaka yang diperlukan.



Pustaka pertama yang perlu kita instal ke dalam proyek kita adalah LangChain. Itu tidak datang dengan pustaka standar Python jadi kita harus menginstalnya secara terpisah. Karena langchain tersedia di PyPi, kita dapat dengan mudah menginstalnya menggunakan perintah pip di terminal. Jadi, kami menjalankan perintah berikut untuk menginstal perpustakaan LangChain:



$ pip instal langchain

Perpustakaan diinstal segera setelah persyaratan dipenuhi.





Kami juga membutuhkan pustaka OpenAI untuk dipasang di proyek kami sehingga kami dapat mengakses model OpenAI. Perpustakaan ini dapat diresmikan dengan menulis perintah pip:

$ pip instal openai

Sekarang, kedua pustaka yang diperlukan sudah diinstal ke dalam file proyek kita. Kita harus mengimpor modul yang diperlukan.



dari langchain. embeddings . openai impor OpenAIEmbeddings

impor Anda

Anda . sekitar [ 'OPENAI_API_KEY' ] = 'sk-YOUR_API_KEY'

Untuk mendapatkan embeddings OpenAI, kita harus mengimpor kelas OpenAIEmbeddings dari paket “langchain.embeddings.openai”. Kemudian, kami menetapkan kunci API sebagai variabel lingkungan. Kami memerlukan kunci API rahasia untuk mengakses berbagai model OpenAI. Kunci ini dapat dihasilkan dari platform OpenAI. Cukup daftar dan dapatkan kunci rahasia dari bagian 'lihat kunci rahasia' di profil Anda. Kunci ini dapat digunakan di berbagai proyek untuk klien tertentu.

Variabel lingkungan digunakan untuk menyimpan kunci API untuk lingkungan tertentu daripada melakukan hardcoding ke dalam fungsi. Jadi, untuk menetapkan kunci API sebagai variabel lingkungan, kita harus mengimpor modul “os”. Metode os.environ() digunakan untuk menyetel kunci API sebagai variabel lingkungan. Ini berisi nama dan nilai. Nama yang kita atur adalah 'OPENAI_API_KEY' dan kunci rahasianya diatur ke 'nilai'.

model = OpenAIEmbeddings ( )

Masukkan teks = 'Ini untuk demonstrasi.'

hasil = model. embed_query ( Masukkan teks )

mencetak ( hasil )

mencetak ( hanya ( hasil ) )

Kami sudah berinteraksi dengan pembungkus penyematan OpenAI. Setelah itu, kita memanggil konstruktor kelas OpenAIEmbedding. OpenAI menyediakan berbagai model penyematan tetapi Anda harus membayarnya. Di sini, kita menggunakan model embedding default OpenAI, yaitu text-embedding-ada-002, yang gratis. Jika Anda tidak memberikan nama model apa pun sebagai parameter, model default akan digunakan.

Kemudian, kami menentukan teks yang harus kami sematkan. Teks ditentukan sebagai 'Ini untuk demonstrasi.' dan simpan dalam variabel input_text. Setelah itu, metode embed_query() untuk menyematkan teks yang disediakan dipanggil dengan model yang digunakan dan input_text yang memiliki string teks untuk mengambil embedding yang disediakan sebagai parameter. Embedding yang diambil ditugaskan ke objek hasil.

Terakhir, untuk menampilkan hasilnya, kami memiliki metode print() Python. Kita cukup meneruskan objek yang menyimpan nilai yang ingin kita tampilkan ke metode print(). Karenanya, kami memanggil fungsi ini dua kali; pertama untuk menampilkan daftar angka mengambang dan kedua untuk mencetak panjang nilai-nilai ini menggunakan metode len() dengan itu.

Daftar nilai floating dapat dilihat pada snapshot berikut dengan panjang nilai tersebut:

Contoh: Memperoleh Banyak Teks/Dokumen Input Menggunakan Penyematan Teks OpenAI

Selain mendapatkan penyematan untuk satu input teks, kami juga dapat mengambilnya untuk beberapa input string. Kami menerapkannya ke dalam ilustrasi ini.

Kami sudah menginstal perpustakaan di ilustrasi sebelumnya. Pustaka lain yang perlu kita instal di sini adalah pustaka tiktoken Python. Tulis perintah di terminal untuk menginstalnya:

$ pip instal tiktoken

Paket tiktoken adalah tokenizer Byte Pair Encoding. Ini digunakan dengan model OpenAI dan memecah teks menjadi token. Ini digunakan karena string yang disediakan terkadang agak panjang untuk model OpenAI yang ditentukan. Jadi, itu membagi teks dan menyandikannya menjadi token. Sekarang, mari kita kerjakan proyek utama.

dari langchain. embeddings . openai impor OpenAIEmbeddings

model = OpenAIEmbeddings ( bukaai_api_key = 'sk-YOUR_API_KEY'

string = ['
Ini adalah untuk demonstrasi. ', ' Ini rangkaian adalah Juga untuk demonstrasi. ', ' Ini adalah demo lain rangkaian . ', ' Yang ini adalah terakhir rangkaian . ']

hasil = model.embed_documents(string)

cetak(hasil)

cetak(len(hasil))

Kelas OpenAIEmbeddings diimpor dari paket “langchain.embeddings.openai”. Pada contoh sebelumnya, kami menetapkan kunci API sebagai variabel lingkungan. Namun untuk yang satu ini, kami meneruskannya langsung ke konstruktor. Jadi, kita tidak perlu mengimpor modul 'os' di sini.

Setelah menjalankan model OpenAI yang merupakan OpenAIEmbeddings, kami meneruskan kunci API rahasia ke sana. Di baris berikutnya, string teks ditentukan. Di sini, kami menyimpan empat string teks dalam string objek. String ini adalah 'Ini untuk demonstrasi', 'String ini juga untuk demonstrasi', 'Ini adalah string demo lainnya', dan 'Ini adalah string terakhir'.

Anda dapat menentukan beberapa string hanya dengan memisahkan masing-masing dengan koma. Pada contoh sebelumnya, metode embed_text() dipanggil tetapi kita tidak dapat menggunakannya di sini karena hanya berfungsi untuk string teks tunggal. Untuk menyematkan beberapa string, metode yang kita miliki adalah embed_document(). Jadi, kami menyebutnya dengan model OpenAI yang ditentukan dan string teks sebagai argumen. Output disimpan di objek hasil. Terakhir, untuk menampilkan output, metode Python print() digunakan dengan hasil objek sebagai parameternya. Juga, kami ingin melihat panjang dari nilai-nilai mengambang ini. Jadi, kita memanggil metode len() di dalam metode print().

Output yang diambil disediakan dalam gambar berikut:

Kesimpulan

Posting ini membahas konsep embedding di LangChain. Kami mempelajari apa itu penyematan dan cara kerjanya. Implementasi praktis penyematan string teks ditampilkan di sini. Kami melakukan dua ilustrasi. Contoh pertama bekerja untuk mengambil penyematan string teks tunggal dan contoh kedua memahami cara mendapatkan penyematan beberapa string input menggunakan model penyematan OpenAI.