View a markdown version of this page

Menggunakan DynamoDB dengan LangChain - Amazon DynamoDB

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Menggunakan DynamoDB dengan LangChain

LangChainadalah kerangka kerja untuk membangun aplikasi dengan model bahasa besar (LLM). Dua LangChain integrasi menggunakan DynamoDB: DynamoDBChatMessageHistory kelas menyimpan riwayat percakapan sehingga model dapat berkomunikasi bolak-balik dengan pengguna di seluruh sesi, dan DynamoDBVectorStore kelas mengimplementasikan antarmuka penyimpanan LangChain vektor pada indeks vektor DynamoDB untuk pencarian kesamaan.

Riwayat pesan obrolan

Kel DynamoDBChatMessageHistory as, dalam langchain-community paket untuk Python dan @langchain/community paket untuk JavaScript, mempertahankan pesan obrolan dalam tabel DynamoDB. Kelas mengharapkan tabel yang ada yang kunci partisinya adalah atribut string bernama SessionId (dapat dikonfigurasi melaluiprimary_key_name). Buat tabel dengan AWS CLI:

aws dynamodb create-table \ --table-name SessionTable \ --attribute-definitions AttributeName=SessionId,AttributeType=S \ --key-schema AttributeName=SessionId,KeyType=HASH \ --billing-mode PAY_PER_REQUEST

Instal paket, lalu baca dan tulis riwayat yang dikunci oleh ID sesi:

pip install langchain-community boto3
from langchain_community.chat_message_histories import DynamoDBChatMessageHistory history = DynamoDBChatMessageHistory( table_name="SessionTable", session_id="user-42", ) history.add_user_message("Hello!") history.add_ai_message("How can I help you today?") print(history.messages)

Setiap pesan sesi obrolan disimpan di bawahnyasession_id, sehingga pengguna yang kembali melanjutkan percakapan di mana mereka tinggalkan. Konstruktor juga mendukung kunci komposit untuk mengisolasi riwayat dengan detail aplikasi seperti ID pengguna (key), Waktu kedaluwarsa Live-based sesi lama (ttl), dan batas pada pesan yang disimpan (history_size). Untuk API lengkap, lihat referensi Python dan JavaScript referensi.

Toko vektor didukung oleh indeks vektor

Kel DynamoDBVectorStore as, dalam langchain-aws paket, mengimplementasikan antarmuka LangChain penyimpanan vektor menggunakan indeks vektor DynamoDB (lihat). Menggunakan indeks vektor di DynamoDB Dokumen disimpan sebagai item DynamoDB biasa dan dicari melalui indeks vektor tabel dengan SearchVectors API, sehingga LangChain retriever dan rantai RAG menjalankan pencarian kesamaan langsung terhadap tabel yang menyimpan data Anda.

Instal paket:

pip install langchain-aws boto3

Berikan nama tabel dan fungsi embedding. Tabel dan indeks vektor dibuat pada penulisan pertama jika tidak ada:

from langchain_aws.embeddings import BedrockEmbeddings from langchain_aws.vectorstores.dynamodb import DynamoDBVectorStore vector_store = DynamoDBVectorStore.from_texts( ["hello", "developer", "wife"], embedding=BedrockEmbeddings(model_id="amazon.titan-embed-text-v2:0"), table_name="my-documents", ) docs = vector_store.similarity_search("greeting", k=2)

Untuk menelusuri lingkup, lewati partition_attribute saat Anda membangun toko. Indeks vektor kemudian dibuat dengan kunci partisi skema pencarian pada bidang metadata dokumen itu, dan setiap pencarian hanya memeriksa satu nilainya, seperti koleksi, kategori, atau penyewa, bukan seluruh korpus. Setiap pencarian kemudian memberikan nilai melalui filter={partition_attribute: value} atau tingkat toko. default_partition_value Kunci partisi adalah bagian dari skema indeks dan tidak dapat diubah setelah indeks dibuat.

Ingatlah hal-hal berikut ini:

  • Seperti indeks sekunder global, indeks vektor pada akhirnya konsisten: pencarian yang dikeluarkan segera setelah add_texts mungkin tidak menyertakan dokumen yang baru ditulis sampai indeks mengejar ketinggalan.

  • SearchVectorsmengembalikan paling banyak 100 kecocokan teratas per kueri, sehingga k parameter toko dibatasi pada 100.

  • Dimensi indeks, fungsi jarak, dan skema pencarian ditetapkan pada saat pembuatan. Toko memvalidasi mereka terhadap indeks yang ada daripada melanjutkan dengan ketidakcocokan.

Untuk API lengkap, lihat DynamoDBVectorStore di repositori langchain-aws.

Sumber daya tambahan