Pangkalan Data Vektor: Pinecone, Weaviate & pgvector · Pelajaran

Mengintegrasikan dengan Rangka Kerja LLM

Pelajari cara menyambungkan pangkalan data vektor dengan rangka kerja orkestrasi LLM popular seperti LangChain atau LlamaIndex.

Pelajaran 2 daripada 412 langkah

Mengintegrasikan dengan Rangka Kerja LLM ialah pelajaran Pangkalan Data Vektor: Pinecone, Weaviate & pgvector percuma di CoddyKit. Ini ialah pelajaran 2 daripada 4. Sebanyak 3 pelajaran dalam laluan pembelajaran ini boleh dibaca sepenuhnya secara percuma — selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan praktikal dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Pangkalan Data Vektor: Pinecone, Weaviate & pgvector, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Pangkalan Data Vektor: Pinecone, Weaviate & pgvector merangkumi sejumlah 4 pelajaran.

Rangka Kerja LLM untuk RAG

Selamat datang! Dalam pelajaran ini, kita akan mempelajari cara menyambungkan pangkalan data vektor dengan rangka kerja penyelarasan LLM yang berkuasa. Rangka kerja ini memudahkan pembinaan aplikasi AI kompleks seperti Penjanaan Diperkukuh Pengambilan (RAG).

Anggaplah rangka kerja ini sebagai alat yang membantu model bahasa anda berkomunikasi dengan pangkalan data vektor secara cekap.

Mengapa Menggunakan Rangka Kerja LLM?

Membina aplikasi RAG melibatkan banyak langkah: memuatkan data, memecahkan teks, menjana pembenaman, menyimpannya dalam pangkalan data vektor, mendapatkan serpihan yang berkaitan dan akhirnya menghantarnya kepada LLM.

Rangka kerja LLM melancarkan proses ini dengan:

  • Mengabstrakkan kerumitan: Menyediakan antara muka bersatu untuk pelbagai komponen.
  • Kemodulan: Membolehkan anda menukar model atau pangkalan data yang berbeza dengan mudah.
  • Pengurusan aliran kerja: Membantu merangkaikan pelbagai operasi.

Pengenalan kepada LangChain

LangChain ialah rangka kerja popular untuk membangunkan aplikasi yang dikuasakan oleh model bahasa. Rangka kerja ini terkenal dengan reka bentuk modularnya, yang memudahkan pembinaan aliran kerja LLM yang kompleks.

Konsep utama dalam LangChain termasuk:

  • Rantaian: Urutan panggilan kepada LLM atau utiliti lain.
  • Ejen: LLM yang menentukan alat yang hendak digunakan dan susunannya.
  • Pengambil: Komponen yang mendapatkan dokumen daripada sumber data.
  • Stor Vektor: Integrasi dengan pelbagai pangkalan data vektor.

Pengenalan kepada LlamaIndex

LlamaIndex (dahulunya GPT Index) ialah satu lagi rangka kerja data terkemuka untuk aplikasi LLM. Rangka kerja ini memberikan tumpuan besar kepada pemerolehan data, pengindeksan dan pengambilan untuk memperkukuh LLM.

LlamaIndex amat kukuh dalam:

  • Penyambung data: Memuatkan data daripada pelbagai sumber dengan mudah.
  • Indeks data: Menstrukturkan data untuk pengambilan yang cekap (contohnya, VectorStoreIndex).
  • Enjin pertanyaan: Menyediakan antara muka untuk membuat pertanyaan terhadap data yang telah diindeks.

LangChain: Menyediakan Stor Vektor

LangChain membolehkan anda mengintegrasikan pelbagai pangkalan data vektor dengan mudah. Di sini, kita akan menggunakan pangkalan data Chroma dalam memori untuk menunjukkan persediaannya.

Perhatikan bahawa `Chroma.from_documents` mengendalikan pembenaman dan penyimpanan.

from langchain_community.vectorstores import Chroma
from langchain_community.embeddings import OpenAIEmbeddings
from langchain_core.documents import Document

# Dummy Embedding Model for demonstration
class DummyEmbeddings(OpenAIEmbeddings):
    def embed_documents(self, texts):
        return [[0.1] * 1536 for _ in texts]
    def embed_query(self, text):
        return [0.1] * 1536

embeddings = DummyEmbeddings()

docs = [
    Document(page_content="The quick brown fox."),
    Document(page_content="AI is transforming industries."),
    Document(page_content="Vector databases are key."),
]

# Create an in-memory Chroma vector store
db = Chroma.from_documents(docs, embeddings)

print("Chroma vector store initialized.")
print(f"Number of documents: {len(docs)}")

LangChain: Pengendalian Dokumen

Sebelum disimpan dalam pangkalan data vektor, data biasanya perlu dimuatkan dan diproses. LangChain menyediakan DocumentLoaders untuk membaca data dan TextSplitters untuk memecahkannya kepada serpihan yang mudah diurus.

Ini memastikan pengambilan dan panjang gesaan yang optimum untuk LLM.

from langchain_community.document_loaders import TextLoader
from langchain_text_splitters import CharacterTextSplitter
import os

# Create a dummy text file
with open("sample.txt", "w") as f:
    f.write("This is a long text about RAG. "
            "It combines retrieval with generation. "
            "Vector databases are essential here.")

# Load documents
loader = TextLoader("sample.txt")
documents = loader.load()

# Split documents into chunks
text_splitter = CharacterTextSplitter(
    chunk_size=50, chunk_overlap=0
)
split_docs = text_splitter.split_documents(documents)

print(f"Original doc content: {documents[0].page_content[:40]}...")
print(f"Number of split chunks: {len(split_docs)}")
print(f"First chunk: {split_docs[0].page_content}")

os.remove("sample.txt") # Clean up

LangChain: Mencipta Pengambil

Setelah stor vektor disediakan, anda boleh menukarnya menjadi Retriever. Komponen ini bertanggungjawab mendapatkan dokumen yang berkaitan berdasarkan pertanyaan, yang penting untuk bahagian “Pengambilan” dalam RAG.

Pengambil mengabstrakkan logik carian asas pangkalan data vektor.

from langchain_community.vectorstores import Chroma
from langchain_community.embeddings import OpenAIEmbeddings
from langchain_core.documents import Document

# Dummy Embeddings & Documents
class DummyEmbeddings(OpenAIEmbeddings):
    def embed_documents(self, texts): return [[0.1] * 1536 for _ in texts]
    def embed_query(self, text): return [0.1] * 1536
embeddings = DummyEmbeddings()
docs = [
    Document(page_content="Apples are red."),
    Document(page_content="Bananas are yellow."),
    Document(page_content="Grapes are purple."),
]
db = Chroma.from_documents(docs, embeddings)

# Convert the vector store into a retriever
retriever = db.as_retriever()

query = "What color are grapes?"
retrieved_docs = retriever.invoke(query)

print(f"Query: '{query}'")
print(f"Retrieved {len(retrieved_docs)} documents.")
for i, doc in enumerate(retrieved_docs):
    print(f"  Doc {i+1}: {doc.page_content}")

LlamaIndex: Mengindeks Dokumen

LlamaIndex menggunakan konsep “Indeks” untuk menstrukturkan data anda bagi pengambilan yang cekap. VectorStoreIndex ialah jenis yang biasa digunakan dan memanfaatkan pangkalan data vektor untuk carian keserupaan.

Contoh ini menunjukkan cara mencipta indeks berasaskan Chroma dalam memori dengan LlamaIndex.

from llama_index.core import VectorStoreIndex, Document
from llama_index.embeddings.openai import OpenAIEmbedding
from llama_index.vector_stores.chroma import ChromaVectorStore
import chromadb
from llama_index.core import Settings

# Initialize an in-memory Chroma client
db = chromadb.Client()
chroma_collection = db.get_or_create_collection("my_ll_docs")
vector_store = ChromaVectorStore(chroma_collection=chroma_collection)

# Dummy documents
documents = [
    Document(text="LlamaIndex builds LLM apps."),
    Document(text="It helps with data indexing."),
    Document(text="Vector dbs are core for retrieval."),
]

# Dummy embedding model for runnable example
class DummyLlamaIndexEmbeddings(OpenAIEmbedding):
    def _get_query_embedding(self, query): return [0.2] * 1536
    def _get_text_embedding(self, text): return [0.2] * 1536

Settings.embed_model = DummyLlamaIndexEmbeddings()

# Create a VectorStoreIndex
index = VectorStoreIndex.from_documents(
    documents, vector_store=vector_store
)

print("LlamaIndex VectorStoreIndex created.")

LlamaIndex: Membuat Pertanyaan terhadap Indeks

Setelah indeks dicipta dalam LlamaIndex, anda boleh menggunakan QueryEngine untuk menjalankan carian. Enjin pertanyaan mengendalikan pengambilan daripada stor vektor asas dan secara pilihan boleh berinteraksi dengan LLM untuk mensintesis respons.

Di sini, kita menumpukan pada aspek pengambilan.

from llama_index.core import VectorStoreIndex, Document
from llama_index.embeddings.openai import OpenAIEmbedding
from llama_index.vector_stores.chroma import ChromaVectorStore
import chromadb
from llama_index.core import Settings

# Initialize in-memory Chroma client & store
db = chromadb.Client()
chroma_collection = db.get_or_create_collection("my_ll_docs_query")
vector_store = ChromaVectorStore(chroma_collection=chroma_collection)

# Dummy documents
documents = [
    Document(text="LlamaIndex helps build context-augmented LLM apps."),
    Document(text="It provides tools for data ingestion."),
    Document(text="Retrieval is key for RAG."),
]

# Dummy embedding model
class DummyLlamaIndexEmbeddings(OpenAIEmbedding):
    def _get_query_embedding(self, query): return [0.2] * 1536
    def _get_text_embedding(self, text): return [0.2] * 1536

Settings.embed_model = DummyLlamaIndexEmbeddings()

# Create and populate index
index = VectorStoreIndex.from_documents(
    documents, vector_store=vector_store
)

# Create a query engine
query_engine = index.as_query_engine()

# Perform a query
query = "What does LlamaIndex do?"
response = query_engine.query(query)

print(f"Query: '{query}'")
print(f"Response (partial): {str(response)[:80]}...")

Menyambungkan Rangka Kerja & Pangkalan Data Vektor

LangChain dan LlamaIndex kedua-duanya menawarkan integrasi yang mantap dengan pelbagai pangkalan data vektor (seperti Pinecone, Weaviate, pgvector dan sebagainya). Rangka kerja ini menyediakan lapisan abstraksi yang membolehkan anda bertukar antara pangkalan data vektor dengan perubahan kod yang minimum.

Ini memudahkan pembangunan dan penyelenggaraan aplikasi RAG dengan memisahkan logik aplikasi anda daripada pelaksanaan pangkalan data tertentu.

Semakan Komponen Rangka Kerja

Antara berikut, yang manakah merupakan komponen atau konsep biasa dalam rangka kerja penyelarasan LLM (seperti LangChain atau LlamaIndex) apabila membina aplikasi RAG?

Ringkasan: Integrasi dengan Rangka Kerja

Syabas! Anda telah mempelajari cara rangka kerja penyelarasan LLM seperti LangChain dan LlamaIndex memudahkan pembinaan aplikasi RAG melalui integrasi dengan pangkalan data vektor.

  • Rangka kerja ini menyediakan abstraksi untuk pangkalan data vektor.
  • Rangka kerja ini menawarkan alat untuk memuatkan, memecahkan dan mengindeks dokumen.
  • Rangka kerja ini membolehkan pengambilan yang cekap melalui pengambil dan enjin pertanyaan.

Rangka kerja ini penting untuk mengurus kerumitan aplikasi AI moden.

Percuma untuk bermula

Pelajari Pangkalan Data Vektor: Pinecone, Weaviate & pgvector dengan tutor kecerdasan buatan — percuma

Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.

Kursus
12
Pelajaran
48

Soalan Lazim

Adakah pelajaran “Mengintegrasikan dengan Rangka Kerja LLM” percuma?

Ya — sebanyak 3 pelajaran dalam laluan pembelajaran Pangkalan Data Vektor: Pinecone, Weaviate & pgvector, termasuk “Mengintegrasikan dengan Rangka Kerja LLM”, boleh dibaca sepenuhnya secara percuma di web ini. Selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan interaktif dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Kursus Pangkalan Data Vektor: Pinecone, Weaviate & pgvector merangkumi sejumlah 4 pelajaran.

Apakah yang akan saya pelajari dalam “Mengintegrasikan dengan Rangka Kerja LLM”?

Pelajari cara menyambungkan pangkalan data vektor dengan rangka kerja orkestrasi LLM popular seperti LangChain atau LlamaIndex. Anda berlatih Pangkalan Data Vektor: Pinecone, Weaviate & pgvector menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.

Adakah saya memerlukan pengalaman untuk memulakan Pangkalan Data Vektor: Pinecone, Weaviate & pgvector?

Tiada pengalaman terdahulu diperlukan. Pembelajaran Pangkalan Data Vektor: Pinecone, Weaviate & pgvector di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 2 daripada 4.

Berapa lamakah pelajaran “Mengintegrasikan dengan Rangka Kerja LLM” diambil?

Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.

Bolehkah saya menulis dan menjalankan kod dalam pelajaran Pangkalan Data Vektor: Pinecone, Weaviate & pgvector ini?

Ya. Setiap pelajaran Pangkalan Data Vektor: Pinecone, Weaviate & pgvector menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.

Semua pelajaran dalam kursus ini

  1. Gambaran Keseluruhan Seni Bina Sistem RAG
  2. Mengintegrasikan dengan Rangka Kerja LLM
  3. Mendapatkan Maklumat Kontekstual
  4. Strategi Pembahagian untuk RAG
← Kembali ke Pangkalan Data Vektor: Pinecone, Weaviate & pgvector