Sedang mengikuti modul ini?
Modul 13 · Halaman 14 daripada 20 · 9 bahagian
LangChain dengan Pangkalan Data Vektor
Apa itu pangkalan data vektor, cara ia berfungsi, perbandingan yang popular, antara muka VectorStore bersama LangChain dan contoh dengan FAISS, Chroma dan Qdrant.
Apa itu Pangkalan Data Vektor?
- Pangkalan data vektor menyimpan teks, imej atau data lain sebagai vektor berangka (embedding).
- Ia membolehkan carian persamaan yang pantas untuk mencari data yang relevan secara semantik.
- Penting untuk aplikasi RAG.
- Pangkalan data vektor popular: FAISS, Chroma, Qdrant, Weaviate, Pinecone, Milvus, dsb.
- LangChain menyediakan integrasi mudah dengan pangkalan data vektor ini.
Mengapa Menggunakan Pangkalan Data Vektor?
- Mencari maklumat relevan berdasarkan makna (carian semantik).
- Berfungsi lebih baik daripada carian kata kunci.
- Mengendalikan data tidak berstruktur dalam jumlah besar.
- Meningkatkan ketepatan respons LLM.
- Menyokong penapisan (carian berasaskan metadata).
- Boleh skala dan berprestasi tinggi untuk kegunaan perusahaan.
- Berguna untuk carian dokumen, pangkalan pengetahuan, chatbot dan sistem RAG.
Cara Pangkalan Data Vektor Berfungsi
DokumenPDF, TXT, dsb.
Pecah TeksChunk
Cipta EmbeddingsGuna model embedding
Simpan dalam Pangkalan Data Vektor
Carian PersamaanDalam vector DB
Chunk RelevanKepada LLM
Respons AkhirKepada pengguna
Semasa pertanyaan, pertanyaan pengguna ditukar kepada embedding dan K dokumen teratas yang relevan dipulangkan.
Perbandingan Pangkalan Data Vektor Popular
| Vector DB | Jenis | Ciri Utama | Kes Penggunaan |
|---|---|---|---|
| FAISS | Setempat (pustaka) | Pantas, mudah, dalam memori | Pembangunan setempat, data kecil hingga sederhana |
| Chroma | Setempat / pelayan | Mudah digunakan, storan kekal | Prototaip, projek sumber terbuka |
| Qdrant | Pelayan / awan | Prestasi tinggi, penapisan, payload | Pengeluaran, aplikasi boleh skala |
| Pinecone | Awan | Perkhidmatan terurus, boleh skala | Perusahaan, kegunaan pengeluaran |
| Weaviate | Pelayan / awan | Carian hibrid, penapisan metadata | Pengeluaran, carian semantik |
| Milvus | Pelayan / awan | Kebolehskalaan tinggi, teragih | Aplikasi perusahaan berskala besar |
Abstraksi VectorStore LangChain
- LangChain menyediakan antara muka VectorStore sepunya untuk pelbagai pangkalan data.
- Anda boleh bertukar antara pangkalan data dengan mengubah beberapa baris kod.
- Menyokong penambahan dokumen, carian persamaan dan penapisan metadata.
- Berintegrasi dengan model embedding dan retriever.
- Berfungsi lancar dengan chain RAG.
- add_documents()
- Tambah dokumen ke vector store
- similarity_search()
- Cari dokumen serupa
- similarity_search_with_score()
- Dapatkan hasil dengan skor
- as_retriever()
- Cipta retriever untuk RAG
- delete()
- Padam dokumen
- get()
- Dapatkan dokumen mengikut id
1
2
3
4
5
6
Contoh 1: FAISS
python
from langchain.document_loaders import PyPDFLoader from langchain.text_splitter import CharacterTextSplitter from langchain.embeddings import OpenAIEmbeddings from langchain.vectorstores import FAISS # 1. Load and split document loader = PyPDFLoader("data/company_policy.pdf") docs = loader.load() splitter = CharacterTextSplitter(chunk_size=500, chunk_overlap=50) chunks = splitter.split_documents(docs) # 2. Create embeddings embeddings = OpenAIEmbeddings() # 3. Create FAISS vector store vectorstore = FAISS.from_documents(chunks, embeddings) # 4. Similarity search results = vectorstore.similarity_search("What is the leave policy?", k=3) for doc in results: print(doc.page_content) print("Source:", doc.metadata)
Contoh 2: Chroma
python
from langchain.document_loaders import DirectoryLoader from langchain.text_splitter import RecursiveCharacterTextSplitter from langchain.embeddings import OpenAIEmbeddings from langchain.vectorstores import Chroma # Load documents loader = DirectoryLoader("data/") # folder with multiple files docs = loader.load() splitter = RecursiveCharacterTextSplitter(chunk_size=500, chunk_overlap=50) chunks = splitter.split_documents(docs) # Create embeddings embeddings = OpenAIEmbeddings() # Create Chroma vector store (persistent storage) vectorstore = Chroma.from_documents( documents=chunks, embedding=embeddings, persist_directory="chroma_db" ) # Search results = vectorstore.similarity_search("What is KYC process?", k=3) for doc in results: print(doc.page_content) print("Source:", doc.metadata)
Contoh 3: Qdrant
python
from langchain.embeddings import OpenAIEmbeddings from langchain.vectorstores import Qdrant embeddings = OpenAIEmbeddings() vectorstore = Qdrant.from_documents( documents=chunks, embedding=embeddings, url="http://localhost:6333", # Qdrant local server collection_name="company_docs" )
Pengajaran Utama
- Pangkalan data vektor membolehkan carian semantik untuk hasil lebih baik.
- LangChain menyediakan antara muka bersatu untuk pelbagai vector store.
- Pilih pangkalan data yang sesuai mengikut skala, kos dan kes penggunaan.
- Gunakan chunking dan embeddings yang betul untuk carian tepat.
- Berfungsi lancar dengan RAG dan agent.
- Menyokong penapisan metadata dan carian hibrid.
- Penting untuk membina aplikasi LLM yang boleh skala.