DeepDigest
LangChain Blog · · ~3 мин

Стратегии RAG от OpenAI: методы и подходы к поиску информации

OpenAI провела эксперименты с технологиями RAG, выявив, что для разных задач нужны разные методы поиска информации. В работе использовались различные подходы: от модификации запросов до маршрутизации между хранилищами данных. Результаты можно воспроизвести, но важно тщательно оценивать эффективность применяемых методов.

LLM
Стратегии RAG от OpenAI: методы и подходы к поиску информации

OpenAI провела серию экспериментов с технологиями RAG для одного из клиентов. Результаты показали: не существует универсального решения — для разных задач требуются разные методы поиска информации. Эффективность оценивается через специальные метрики, которые зависят от конкретного приложения.

Среди методов RAG можно выделить несколько ключевых:

  • Baseline: поиск на основе векторной базы данных с использованием расстояния. В исследовании OpenAI применялась косинусная схожесть.
  • Query Transformations — модификация пользовательского ввода для улучшения поиска. В рамках этого подхода используются разные техники:
    • Query expansion (с помощью LangChain) — запрос расширяется: LLM генерирует несколько запросов с разных точек зрения. Затем извлекаются релевантные документы, формируется объединение уникальных документов.
    • HyDE (Hypothetical Document Embeddings, LangChain) — для входящего запроса генерируются гипотетические документы. Их встраивают и используют в поиске. Предполагается, что такие документы могут быть ближе к нужным исходным материалам, чем сам вопрос.
  • Step back prompting подходит для задач рассуждения. Вопрос разбивается на более общие принципы и концепции. Ответ синтезируется на основе исходного вопроса и «отступного» ответа. Например, вопрос по физике можно абстрагировать до вопроса о физических принципах.
  • Rewrite-Retrieve-Read — переписывание вопросов пользователя, чтобы улучшить поиск.

Важную роль играет маршрутизация вопросов (Routing) между несколькими хранилищами данных. В презентации OpenAI упоминались два векторных хранилища и одна SQL-база данных. LangChain использует LLM, чтобы направлять пользовательский ввод в нужные подцепочки (например, в различные векторные хранилища).

Ещё один важный элемент — построение запросов (Query Construction). Система генерирует корректный SQL-запрос из ввода пользователя, чтобы извлечь информацию из реляционной (SQL) базы данных. LangChain поддерживает такую возможность — подробности можно найти в недавних материалах по построению запросов.

OpenAI также зафиксировала заметный рост производительности благодаря экспериментам с размером чанков при встраивании документов в процессе построения индекса. Не менее важна пост-обработка документов — она выполняется после извлечения, но до подачи в LLM. Этот этап позволяет обеспечить разнообразие или актуальность извлекаемых материалов, особенно когда данные объединяются из нескольких источников. OpenAI описала два метода пост-обработки:

  1. Re-rank — интеграция LangChain с определённым эндпоинтом для сжатия документов (сокращение избыточности) при извлечении большого количества материалов.
  2. Классификация — каждый извлечённый документ классифицируется по содержанию. Затем выбирается запрос в зависимости от классификации. LangChain поддерживает классификацию, в том числе с использованием вызова функций для обеспечения схемы вывода.

Есть и другие подходы:

  • MMR — многие vectorstores предлагают баланс между релевантностью и разнообразием.
  • Кластеризация — некоторые методы используют кластеризацию встроенных документов с выборкой. Это полезно при консолидации материалов из широкого круга источников.

Результаты экспериментов OpenAI в области RAG можно воспроизвести. Главное — пробовать разные методы, ведь производительность приложения сильно зависит от настройки RAG. При этом критически важна оценка эффективности: она позволяет не тратить время на малоэффективные подходы. Для оценки RAG есть значительная поддержка — например, существует рецепт с использованием LangSmith для оценки нескольких продвинутых цепочек RAG.

Text-to-metadata filter
Text-to-Cypher
Text-to-SQL+semantic
Postgres with Pgvector
open source
Streamlit app
favorable results
guides for fine-tuning
very
good
Cohere ReRank
blog
implementation
multi-query
tagging
of
text
logical routing
max-marginal-relevance
search
here
LangSmith
here

// оригинал
LangChain Blog ↗ Читать оригинал
11 просмотров
// поделиться Telegram VK