A nagy nyelvi modellek (LLM-ek) mint a GPT-4 es a Claude rendkivul hatalmasak, de alapveto korlattal rendelkeznek: tudasuk a tanitas pillanatahoz van rogzitve. A Retrieval-Augmented Generation (RAG) pontosan ezt a problemat oldja meg az LLM-ek generativ erejenek es a kulso forrasokbol valo informaciolekeretes kepessegenek kombinalaasval.
A problema: Az LLM-ek korlаtai
- Statikus tudas: Egy LLM csak azt tudja, amit a tanitas soran latott.
- Hallucinaciok: Ha egy LLM nem tudja a valaszt, hajlamos kitalalni egyet.
- Nincs hozzaferes privat adatokhoz: Egy generikus LLM nem fer hozza a vallalatod belso dokumentaciоjahoz.
Mi az a RAG?
Hogyan mukodik a RAG reszletesen
1. fazis: Indexeles
2. fazis: Lekeretes + Generalas
RAG Pipeline epitese LangChain-nel
pip install langchain langchain-openai langchain-community chromadb
from langchain_community.document_loaders import PyPDFLoader from langchain.text_splitter import RecursiveCharacterTextSplitter from langchain_openai import OpenAIEmbeddings, ChatOpenAI from langchain_community.vectorstores import Chroma from langchain_core.prompts import ChatPromptTemplate from langchain_core.runnables import RunnablePassthrough from langchain_core.output_parsers import StrOutputParser # Dokumentumok betoltese es feldarabolasa pdf_docs = PyPDFLoader("docs/manual.pdf").load() chunks = RecursiveCharacterTextSplitter(chunk_size=1000, chunk_overlap=200).split_documents(pdf_docs) # Embedding-ek es vector store vectorstore = Chroma.from_documents( documents=chunks, embedding=OpenAIEmbeddings(model="text-embedding-3-small"), persist_directory="./chroma_db", ) # RAG lanc llm = ChatOpenAI(model="gpt-4o", temperature=0) retriever = vectorstore.as_retriever(search_type="similarity", search_kwargs={"k": 4}) prompt = ChatPromptTemplate.from_template(""" Answer the question based only on the provided context. If the context does not contain enough information, say you don't know. Context: {context} Question: {question} Answer: """) def format_docs(docs): return "\n\n".join(doc.page_content for doc in docs) rag_chain = ( {"context": retriever | format_docs, "question": RunnablePassthrough()} | prompt | llm | StrOutputParser() )
Halado RAG technikak
Ide tartozik a Multi-Query Retrieval, kontextualis tomorities, hibrid kereses es beszelgeteses RAG memoriaval.
Bevalt gyakorlatok
- Kiserletezz kulonbozo fragmentum-meretekkel (500-1500 token).
- Hasznalj dokumentum-metaadatokat.
- Ertekeld a minosegett frameworkokkel mint a RAGAS.
- Implementalj ujrafeldolgozasi pipeline-t a dokumentum-frissitesekhez.
- Adj hozza re-rankert a kezdeti lekeretes utan.
Osszefoglalas
A RAG szabvanyos architekturava valt specifikus, naprakesz tudashoz hozzafero AI alkalmazasok epiteshez. A LangChain jelentosen leegyszerüsiti a megvalositast.