spinny:~/writing $ less rag-langchain-deep-dive.md
12A 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.34## A problema: Az LLM-ek korlаtai561. **Statikus tudas**: Egy LLM csak azt tudja, amit a tanitas soran latott.72. **Hallucinaciok**: Ha egy LLM nem tudja a valaszt, hajlamos kitalalni egyet.83. **Nincs hozzaferes privat adatokhoz**: Egy generikus LLM nem fer hozza a vallalatod belso dokumentaciоjahoz.910## Mi az a RAG?1112```mermaid13graph LR14 User["User"] -- "Question" --> Retriever15 Retriever -- "Search relevant\ndocuments" --> VectorStore["Vector Store"]16 VectorStore -- "Relevant\ndocuments" --> Retriever17 Retriever -- "Context + Question" --> LLM18 LLM -- "Grounded\nresponse" --> User19```2021## Hogyan mukodik a RAG reszletesen2223### 1. fazis: Indexeles2425```mermaid26graph TD27 A["Documents\n(PDF, HTML, MD, DB)"] --> B["Document Loader"]28 B --> C["Text Splitter"]29 C --> D["Text Chunks"]30 D --> E["Embedding Model"]31 E --> F["Numerical Vectors"]32 F --> G["Vector Store\n(ChromaDB, Pinecone, FAISS)"]33```3435### 2. fazis: Lekeretes + Generalas3637## RAG Pipeline epitese LangChain-nel3839```bash40pip install langchain langchain-openai langchain-community chromadb41```4243```python44from langchain_community.document_loaders import PyPDFLoader45from langchain.text_splitter import RecursiveCharacterTextSplitter46from langchain_openai import OpenAIEmbeddings, ChatOpenAI47from langchain_community.vectorstores import Chroma48from langchain_core.prompts import ChatPromptTemplate49from langchain_core.runnables import RunnablePassthrough50from langchain_core.output_parsers import StrOutputParser5152# Dokumentumok betoltese es feldarabolasa53pdf_docs = PyPDFLoader("docs/manual.pdf").load()54chunks = RecursiveCharacterTextSplitter(chunk_size=1000, chunk_overlap=200).split_documents(pdf_docs)5556# Embedding-ek es vector store57vectorstore = Chroma.from_documents(58 documents=chunks,59 embedding=OpenAIEmbeddings(model="text-embedding-3-small"),60 persist_directory="./chroma_db",61)6263# RAG lanc64llm = ChatOpenAI(model="gpt-4o", temperature=0)65retriever = vectorstore.as_retriever(search_type="similarity", search_kwargs={"k": 4})6667prompt = ChatPromptTemplate.from_template("""68Answer the question based only on the provided context.69If the context does not contain enough information, say you don't know.7071Context:72{context}7374Question: {question}7576Answer:77""")7879def format_docs(docs):80 return "\n\n".join(doc.page_content for doc in docs)8182rag_chain = (83 {"context": retriever | format_docs, "question": RunnablePassthrough()}84 | prompt85 | llm86 | StrOutputParser()87)88```8990## Halado RAG technikak9192Ide tartozik a Multi-Query Retrieval, kontextualis tomorities, hibrid kereses es beszelgeteses RAG memoriaval.9394## Bevalt gyakorlatok95961. Kiserletezz kulonbozo fragmentum-meretekkel (500-1500 token).972. Hasznalj dokumentum-metaadatokat.983. Ertekeld a minosegett frameworkokkel mint a [RAGAS](https://docs.ragas.io/).994. Implementalj ujrafeldolgozasi pipeline-t a dokumentum-frissitesekhez.1005. Adj hozza re-rankert a kezdeti lekeretes utan.101102## Osszefoglalas103104A RAG szabvanyos architekturava valt specifikus, naprakesz tudashoz hozzafero AI alkalmazasok epiteshez. A LangChain jelentosen leegyszerüsiti a megvalositast.105
:RAG es LangChain: Teljes utmutato a Retrieval-Augmented Generation-hozlines 1-105 (END) — press q to close