الفصل 2: إطار LlamaIndex
نظرة عامة على LlamaIndex
يركّز LlamaIndex (المعروف سابقًا بـ GPT Index) على فهرسة البيانات والاستعلام عنها:
- أنواع فهارس متعددة
- محرّكات استعلام
- تركيب الإجابات
- أدوات تقييم
RAG أساسي مع LlamaIndex
from llama_index import VectorStoreIndex, SimpleDirectoryReader
from llama_index.llms import OpenAI
# Load documents
documents = SimpleDirectoryReader("./data").load_data()
# Create index
index = VectorStoreIndex.from_documents(documents)
# Query
query_engine = index.as_query_engine()
response = query_engine.query("What is RAG?")
print(response)
أنواع الفهارس
from llama_index import (
VectorStoreIndex,
SummaryIndex,
TreeIndex,
KeywordTableIndex
)
# Vector Index - similarity search
vector_index = VectorStoreIndex.from_documents(docs)
# Summary Index - summarization
summary_index = SummaryIndex.from_documents(docs)
# Tree Index - hierarchical
tree_index = TreeIndex.from_documents(docs)
# Keyword Index - keyword extraction
keyword_index = KeywordTableIndex.from_documents(docs)
محرّكات الاستعلام
# Basic query engine
query_engine = index.as_query_engine(
similarity_top_k=5,
response_mode="compact" # or "tree_summarize", "refine"
)
# Chat engine with memory
chat_engine = index.as_chat_engine(
chat_mode="condense_question",
verbose=True
)
# Use chat engine
response = chat_engine.chat("What is RAG?")
response = chat_engine.chat("Tell me more") # Remembers context
أوضاع الإجابة
| الوضع | الوصف | الأنسب لـ |
|---|---|---|
| compact | ملاءمة prompt واحد | الافتراضي |
| refine | تحسين تكراري | سياقات طويلة |
| tree_summarize | ملخص هرمي | وثائق كثيرة |
| simple_summarize | ملخص أساسي | نظرة سريعة |
LangChain مقابل LlamaIndex
| الميزة | LangChain | LlamaIndex |
|---|---|---|
| التركيز | Chains عامة | فهرسة البيانات |
| المرونة | أعلى | متوسطة |
| منحنى التعلّم | أشد | ألطف |
| الأنسب لـ | خطوط معقّدة | أسئلة وأجوبة على الوثائق |
الخطوات التالية
تابع إلى الفصل 3: RAG مخصّص.