0Pricing
AI Agents · Урок

Загрузчики, разделители и векторные хранилища

Используйте DocumentLoaders для PDF/HTML, TextSplitters для разбиения на фрагменты и VectorStores для поиска.

«Загрузчики, разделители и векторные хранилища» — бесплатный урок AI Agents на CoddyKit. Это урок 2 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения AI Agents, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс AI Agents содержит 4 уроков всего.

Части этого урока еще не переведены и отображаются на английском.

Три основы RAG в LangChain

  1. Загрузчики документов — считывают необработанные данные в объекты Documents
  2. Разделители текста — разбивают Documents на фрагменты
  3. Векторные хранилища — создают векторные представления фрагментов и индексируют их

Загрузчики документов

В 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 — локальная установка не требуется.

Все уроки этого курса

  1. Архитектура LangChain: модели, промпты, цепочки
  2. Загрузчики, разделители и векторные хранилища
  3. LCEL (язык выражений LangChain)
  4. Создание цепочки RAG от начала до конца
← Назад к AI Agents