Извлечение данных и контекстное сжатие
Превратите векторное хранилище в настраиваемый механизм извлечения, управляйте количеством возвращаемых документов и используйте контекстное сжатие для удаления нерелевантного текста до его передачи LLM.
«Извлечение данных и контекстное сжатие» — бесплатный урок AI Agents with LangChain & Autonomous Workflows на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения AI Agents with LangChain & Autonomous Workflows, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс AI Agents with LangChain & Autonomous Workflows содержит 4 уроков всего.
Части этого урока еще не переведены и отображаются на английском.
From Vector Store to Retriever
A vector store knows how to search, but agents talk to a retriever — a thin interface with one job: given a query, return relevant documents.
Any vector store exposes as_retriever() to produce one.
retriever = vectorstore.as_retriever()
docs = retriever.invoke('How do I reset my password?')Controlling k
The k parameter sets how many documents to return. Too few misses context; too many wastes tokens and adds noise.
retriever = vectorstore.as_retriever(
search_kwargs={'k': 4}
)Similarity Score Thresholds
Instead of a fixed count, you can return only documents above a relevance score. This avoids forcing irrelevant chunks when nothing good matches.
retriever = vectorstore.as_retriever(
search_type='similarity_score_threshold',
search_kwargs={'score_threshold': 0.7}
)Maximal Marginal Relevance
MMR balances relevance with diversity, avoiding near-duplicate chunks. It is great when documents repeat similar text.
retriever = vectorstore.as_retriever(
search_type='mmr',
search_kwargs={'k': 4, 'fetch_k': 20}
)Metadata Filtering
Documents carry metadata (source, date, category). You can filter retrieval to a subset, e.g. only the current product version.
retriever = vectorstore.as_retriever(
search_kwargs={'filter': {'version': 'v2'}}
)The Noise Problem
Even relevant chunks often contain unrelated sentences. Sending that noise to the LLM dilutes the answer and burns tokens.
Contextual compression shrinks each retrieved document to only the parts that matter for the query.
ContextualCompressionRetriever
This wrapper sits in front of a base retriever and post-processes its results with a compressor.
from langchain.retrievers import ContextualCompressionRetriever
from langchain.retrievers.document_compressors import LLMChainExtractor
compressor = LLMChainExtractor.from_llm(llm)
compression_retriever = ContextualCompressionRetriever(
base_compressor=compressor,
base_retriever=retriever
)How Extraction Works
LLMChainExtractor asks the LLM to pull only the sentences from each document that are relevant to the query, discarding the rest before it reaches the final prompt.
docs = compression_retriever.invoke(
'What is the refund window?'
)Cheaper Filters
LLM extraction costs tokens. EmbeddingsFilter is a faster, cheaper alternative that drops documents below a similarity threshold using embeddings only — no extra LLM call.
from langchain.retrievers.document_compressors import EmbeddingsFilter
compressor = EmbeddingsFilter(
embeddings=embeddings,
similarity_threshold=0.76
)Chaining Compressors
Combine steps in a DocumentCompressorPipeline: first a cheap embeddings filter, then LLM extraction on what survives. This keeps quality high while controlling cost.
from langchain.retrievers.document_compressors import DocumentCompressorPipeline
pipeline = DocumentCompressorPipeline(
transformers=[embeddings_filter, extractor]
)Plugging Into RAG
Because a compression retriever has the same interface as any retriever, you swap it into your RAG chain without changing the rest of the pipeline. Cleaner context usually means better, cheaper answers.
Quick Check
Test your retriever knowledge.
Recap
You learned to tune and refine retrieval:
- Convert a store with
as_retriever()and tunek - Use score thresholds, MMR, and metadata filters
- Contextual compression removes noisy text
EmbeddingsFilteris a cheap alternative to LLM extraction- Chain compressors for quality plus efficiency
Better retrieval is often the biggest lever for RAG quality.
Часто задаваемые вопросы
Урок «Извлечение данных и контекстное сжатие» бесплатный?
Да — полный текст урока «Извлечение данных и контекстное сжатие» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс AI Agents with LangChain & Autonomous Workflows, подпишись на CoddyKit PRO. Курс AI Agents with LangChain & Autonomous Workflows содержит 4 уроков всего.
Чему я научусь в уроке «Извлечение данных и контекстное сжатие»?
Превратите векторное хранилище в настраиваемый механизм извлечения, управляйте количеством возвращаемых документов и используйте контекстное сжатие для удаления нерелевантного текста до его передачи… Ты практикуешь AI Agents with LangChain & Autonomous Workflows с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать AI Agents with LangChain & Autonomous Workflows?
Предыдущий опыт не требуется. AI Agents with LangChain & Autonomous Workflows на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.
Сколько времени занимает урок «Извлечение данных и контекстное сжатие»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке AI Agents with LangChain & Autonomous Workflows?
Да. Каждый урок AI Agents with LangChain & Autonomous Workflows включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Загрузчики документов
- Разделители текста и эмбеддинги
- Векторные хранилища для извлечения данных
- Извлечение данных и контекстное сжатие