Când o bază vectorială returnează un fragment întreg de 500-1000 de caractere, adesea doar o propoziție sau două conțin răspunsul direct la întrebarea utilizatorului. Restul textului reprezintă zgomot care mărește latența și costul tokenilor în LLM și poate duce la halucinații („Lost in the Middle”).
Compresia Contextuală (Contextual Compression) rulează un model intermediar ușor sau o logică de filtrare peste fragmentele extrase înainte de a le include în prompt:
from langchain.retrievers import ContextualCompressionRetriever
from langchain.retrievers.document_compressors import LLMChainExtractor
from langchain_openai import ChatOpenAI
llm = ChatOpenAI(temperature=0, model="gpt-4o-mini")
compressor = LLMChainExtractor.from_llm(llm)
compression_retriever = ContextualCompressionRetriever(
base_compressor=compressor,
base_retriever=vector_store.as_retriever(search_kwargs={"k": 5})
)
# Doar extrasele strict relevante sunt returnate
compressed_docs = compression_retriever.invoke("care sunt cerințele minime de RAM?")
for doc in compressed_docs:
print(f"- {doc.page_content}")
Această abordare reduce lungimea totală a contextului cu până la 70%, menținând în același timp o acuratețe maximă a răspunsurilor generate.
Întrebări & Exemple practice:
Compresia Contextuală și Filtrarea Extensivă a Chunk-urilor în RAGAi o întrebare despre Compresia Contextuală și Filtrarea Extensivă a Chunk-urilor în RAG sau ai descoperit un truc, prompt sau fragment de cod util? Distribuie-l cu ceilalți membri ai comunității!
Fii primul care pune o întrebare sau distribuie un fragment de cod / prompt!
Nu au fost adăugate încă întrebări sau resurse pentru această pagină. Dacă ai testat un prompt sau ai un snippet util, adaugă-l mai jos pentru comunitate.