Загрузчики, разделители и векторные хранилища
Используйте DocumentLoaders для PDF/HTML, TextSplitters для разбиения на фрагменты и VectorStores для поиска.
«Загрузчики, разделители и векторные хранилища» — бесплатный урок AI Agents на CoddyKit. Это урок 2 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения AI Agents, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс AI Agents содержит 4 уроков всего.
Части этого урока еще не переведены и отображаются на английском.
Три основы RAG в LangChain
- Загрузчики документов — считывают необработанные данные в объекты Documents
- Разделители текста — разбивают Documents на фрагменты
- Векторные хранилища — создают векторные представления фрагментов и индексируют их
Загрузчики документов
В LangChain более 100 загрузчиков. Например:
from langchain_community.document_loaders import PyPDFLoader, WebBaseLoader, TextLoader
pdf_docs = PyPDFLoader('handbook.pdf').load()
web_docs = WebBaseLoader('https://example.com').load()
md_docs = TextLoader('README.md').load()Объект Document
Каждый загрузчик возвращает список объектов Documents:
doc = pdf_docs[0]
print(doc.page_content) # the text
print(doc.metadata) # {'source': 'handbook.pdf', 'page': 1}Распространённые загрузчики
- PyPDFLoader, UnstructuredFileLoader — PDF-файлы
- WebBaseLoader, SitemapLoader — веб-страницы
- NotionLoader, GoogleDriveLoader — сервисы SaaS
- GitLoader — репозитории кода
- SQLDatabaseLoader — строки базы данных
Разделители текста
Преобразуйте Documents в более мелкие фрагменты:
from langchain.text_splitter import RecursiveCharacterTextSplitter
splitter = RecursiveCharacterTextSplitter(
chunk_size=800,
chunk_overlap=100,
separators=['\n\n', '\n', '. ', ' ']
)
chunks = splitter.split_documents(pdf_docs)Специализированные разделители
- MarkdownHeaderTextSplitter — разделяет по заголовкам
- RecursiveCharacterTextSplitter — учитывает абзацы и предложения
- HTMLHeaderTextSplitter — учитывает структуру HTML
- Зависящие от языка (Python, Markdown, LaTeX)
Разделение с учётом токенов
Используйте токенизатор модели для точного разделения по токенам:
splitter = RecursiveCharacterTextSplitter.from_tiktoken_encoder(
encoding_name='cl100k_base',
chunk_size=400,
chunk_overlap=50
)Векторные хранилища
Создавайте векторные представления фрагментов и сохраняйте их:
from langchain_openai import OpenAIEmbeddings
from langchain_community.vectorstores import Chroma
embeddings = OpenAIEmbeddings(model='text-embedding-3-small')
store = Chroma.from_documents(
documents=chunks,
embedding=embeddings,
persist_directory='./db'
)Retrieval
retriever = store.as_retriever(search_kwargs={'k': 4})
results = retriever.invoke('What is our return policy?')
for d in results:
print(d.page_content[:200])Сохранение данных
Chroma сохраняет данные на диске, если Вы укажете persist_directory. Для повторной загрузки:
store = Chroma(persist_directory='./db', embedding_function=embeddings)Другие векторные хранилища
Один и тот же интерфейс, разные внутренние реализации:
from langchain_community.vectorstores import FAISS, Pinecone, Qdrant, Weaviate
store = FAISS.from_documents(chunks, embeddings)
store.save_local('./faiss_db')MultiVectorRetriever
Индексируйте небольшие фрагменты, но извлекайте крупные родительские документы:
from langchain.retrievers import MultiVectorRetriever
# Use the parent-child pattern automatically.Ретриверы с самостоятельными запросами
Позвольте LLM создавать фильтры метаданных из естественного языка:
from langchain.retrievers.self_query.base import SelfQueryRetriever
# 'What did Alice say in 2023?' -> filter={author: 'Alice', year: 2023}Результат извлечения
Что возвращает ретривер LangChain?
Итоги
Загрузчики + разделители + векторные хранилища = полноценный стек RAG. Далее: объединение этих компонентов с помощью LCEL в единую цепочку.
Часто задаваемые вопросы
Урок «Загрузчики, разделители и векторные хранилища» бесплатный?
Да — полный текст урока «Загрузчики, разделители и векторные хранилища» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс AI Agents, подпишись на CoddyKit PRO. Курс AI Agents содержит 4 уроков всего.
Чему я научусь в уроке «Загрузчики, разделители и векторные хранилища»?
Используйте DocumentLoaders для PDF/HTML, TextSplitters для разбиения на фрагменты и VectorStores для поиска. Ты практикуешь AI Agents с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать AI Agents?
Предыдущий опыт не требуется. AI Agents на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 4.
Сколько времени занимает урок «Загрузчики, разделители и векторные хранилища»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке AI Agents?
Да. Каждый урок AI Agents включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Архитектура LangChain: модели, промпты, цепочки
- Загрузчики, разделители и векторные хранилища
- LCEL (язык выражений LangChain)
- Создание цепочки RAG от начала до конца