ביתchevron_left מדריכיםchevron_left RAG
architecture
RAG Vector Search מתקדמים

ארכיטקטורת RAG — המדריך המלא

Retrieval Augmented Generation: בנה מערכת ידע חכמה שמאפשרת ל-LLM לענות על שאלות מבסיסי הנתונים שלך — ללא Fine-tuning.

schedule25 דקות קריאה updateעודכן פברואר 2025

מה זה RAG ולמה צריך אותו?

LLMs כמו GPT-4 יודעים הרבה — אבל הם לא מכירים את המסמכים הפנימיים שלך, הנהלים, הקטלוג. RAG פותר את זה בצורה אלגנטית בלי לעשות Fine-tuning יקר.

ללא RAG

  • LLM לא מכיר את מסמכיך
  • Fine-tuning יקר ולא עדכני
  • הלוצינציות גבוהות

עם RAG

  • תשובות מבסיס הנתונים שלך
  • עדכון בזמן אמת
  • ציטוט מקורות מדויק

מימוש מלא — שלב אחר שלב

שלב 1: טעינת מסמכים

from langchain_community.document_loaders import PyPDFLoader, DirectoryLoader loader = DirectoryLoader("./docs/", glob="**/*.pdf", loader_cls=PyPDFLoader) docs = loader.load() print(f"טענו {len(docs)} מסמכים")

שלב 2: Chunking חכם

from langchain.text_splitter import RecursiveCharacterTextSplitter splitter = RecursiveCharacterTextSplitter( chunk_size=1000, chunk_overlap=200, separators=["\n\n", "\n", ".", " "] ) chunks = splitter.split_documents(docs) print(f"פוצל ל-{len(chunks)} קטעים")

שלב 3: Embeddings ו-Vector Store

from langchain_openai import OpenAIEmbeddings from langchain_community.vectorstores import Chroma embeddings = OpenAIEmbeddings(model="text-embedding-3-small") vectorstore = Chroma.from_documents(chunks, embeddings, persist_directory="./chroma_db")

שלב 4: RAG Chain

from langchain_openai import ChatOpenAI from langchain.chains import create_retrieval_chain from langchain.chains.combine_documents import create_stuff_documents_chain from langchain_core.prompts import ChatPromptTemplate llm = ChatOpenAI(model="gpt-4o-mini", temperature=0) system_prompt = """ענה על השאלה בעברית, מבוסס אך ורק על ההקשר הנתון. אם המידע לא נמצא, אמור זאת במפורש. הקשר: {context}""" prompt = ChatPromptTemplate.from_messages([ ("system", system_prompt), ("human", "{input}") ]) chain = create_stuff_documents_chain(llm, prompt) retriever = vectorstore.as_retriever(search_kwargs={"k": 5}) rag_chain = create_retrieval_chain(retriever, chain) response = rag_chain.invoke({"input": "מה מדיניות החזרות?"}) print(response["answer"])
lightbulb

מעבר לייצור עם Pinecone

Chroma מצוינת לפיתוח. לייצור עם מיליוני מסמכים — עבור ל-Pinecone לביצועים גבוהים וסקאלביליות.

Advanced RAG טכניקות

Hybrid Search — שילוב BM25 וVectors

from langchain_community.retrievers import BM25Retriever from langchain.retrievers import EnsembleRetriever bm25 = BM25Retriever.from_documents(chunks); bm25.k = 5 vector_ret = vectorstore.as_retriever(search_kwargs={"k": 5}) hybrid = EnsembleRetriever(retrievers=[bm25, vector_ret], weights=[0.4, 0.6])

Re-ranking — סדר עדיפויות מדויק

from langchain.retrievers.document_compressors import CrossEncoderReranker from langchain_community.cross_encoders import HuggingFaceCrossEncoder from langchain.retrievers import ContextualCompressionRetriever model = HuggingFaceCrossEncoder(model_name="BAAI/bge-reranker-base") compressor = CrossEncoderReranker(model=model, top_n=3) reranking_retriever = ContextualCompressionRetriever( base_compressor=compressor, base_retriever=hybrid )

הצעד הבא: Pinecone בייצור

לפרויקטים ב-Production, Pinecone מציעה ביצועים גבוהים ו-managed infrastructure.

מדריכים נוספים