Sedang mengikuti modul ini?0 daripada 17 selesai
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.

13.1

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.
13.2

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.
13.3

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.

13.4

Perbandingan Pangkalan Data Vektor Popular

Vector DBJenisCiri UtamaKes Penggunaan
FAISSSetempat (pustaka)Pantas, mudah, dalam memoriPembangunan setempat, data kecil hingga sederhana
ChromaSetempat / pelayanMudah digunakan, storan kekalPrototaip, projek sumber terbuka
QdrantPelayan / awanPrestasi tinggi, penapisan, payloadPengeluaran, aplikasi boleh skala
PineconeAwanPerkhidmatan terurus, boleh skalaPerusahaan, kegunaan pengeluaran
WeaviatePelayan / awanCarian hibrid, penapisan metadataPengeluaran, carian semantik
MilvusPelayan / awanKebolehskalaan tinggi, teragihAplikasi perusahaan berskala besar
13.5

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.
1
add_documents()
Tambah dokumen ke vector store
2
similarity_search()
Cari dokumen serupa
3
similarity_search_with_score()
Dapatkan hasil dengan skor
4
as_retriever()
Cipta retriever untuk RAG
5
delete()
Padam dokumen
6
get()
Dapatkan dokumen mengikut id
13.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)
13.7

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)
13.8

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"
)
13.9

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.