Новости и статьи об искусственном интеллекте и нейросетях. Мы собираем и обрабатываем самую актуальную информацию из мира AI. О проекте

Статьи

Агентный поиск информации: как реализовать

Агентный поиск информации сочетает традиционные методы вроде TF-IDF и современные подходы на базе RAG для эффективного нахождения данных с помощью ИИ-агентов. Статья описывает создание собственной системы RAG, использование управляемых сервисов и интеграцию инструментов поиска в LLM для повышения качества ответов. Такой подход позволяет агентам самостоятельно решать, когда применять поиск, что улучшает результаты в сложных сценариях.

20 ноября 2025 г.
7 мин
5

Поиск информации представляет собой ключевую задачу, необходимую для эффективной работы в условиях обилия доступного контента. Такая задача возникает, например, при использовании поисковой системы вроде Google или при запросе ответа на вопрос в ChatGPT. Область поиска может ограничиваться закрытым набором документов или охватывать весь интернет.

В этой статье рассматривается агентный подход к поиску информации, включая эволюцию методов поиска с появлением больших языковых моделей (LLM), особенно в контексте развития ИИ-агентов, которые демонстрируют повышенные возможности в нахождении данных по сравнению с предыдущими технологиями. Сначала анализируется RAG как базовый элемент агентного поиска. Далее на высоком уровне описывается применение ИИ-агентов для поиска информации.

Агентный поиск информации
Эта инфографика отражает ключевые аспекты статьи. Рассматриваются традиционные методы поиска информации, такие как TF-IDF (поиск по ключевым словам), а также RAG. Далее обсуждаются варианты реализации RAG: от самостоятельной сборки с использованием модели эмбеддингов и векторной базы данных до готовых управляемых решений RAG. Затем объясняется, как предоставить поиск по ключевым словам и RAG ИИ-агентам в качестве инструментов. Изображение создано ChatGPT.

Зачем нужен агентный поиск информации

Поиск информации — это относительно старая задача. Алгоритм TF-IDF стал одним из первых методов для обнаружения данных в большом корпусе документов; он индексирует документы на основе частоты слов в них и их распространенности во всем наборе.

Если запрос пользователя содержит слово, которое часто встречается в ограниченном числе документов, но редко в целом корпусе, это сигнализирует о высокой релевантности этих документов.

Поиск информации имеет критическое значение, поскольку люди сильно зависят от быстрого доступа к данным для решения разнообразных задач. К таким задачам относятся:

  • Приготовление конкретного блюда
  • Реализация определенного алгоритма
  • Построение маршрута от точки A до точки B

TF-IDF по-прежнему демонстрирует хорошие результаты, хотя появились и более эффективные способы поиска. Одним из мощных методов является генерация, дополненная поиском (RAG), которая опирается на семантическое сходство для выявления полезных документов.

Агентный поиск информации сочетает различные техники, включая поиск по ключевым словам (например, TF-IDF или его современные аналоги вроде BM25) и RAG, чтобы находить релевантные документы, анализировать их и предоставлять результаты пользователю.

Создание собственной системы RAG

Схема работы RAG
Эта схема иллюстрирует принцип действия RAG. Запрос к документу преобразуется в эмбеддинг, после чего из корпуса выбираются наиболее похожие документы по семантическому сходству. Эти релевантные документы передаются в LLM, которая формирует ответ на основе предоставленных данных. Изображение подготовлено автором.

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

  • Преобразование корпуса документов в эмбеддинги (обычно с разделением на чанки)
  • Хранение эмбеддингов в векторной базе данных
  • Ввод поискового запроса пользователем
  • Преобразование запроса в эмбеддинг
  • Поиск сходства между эмбеддингами корпуса и запроса с возвратом наиболее похожих документов

Такая система может быть собрана за несколько часов при наличии опыта. Для создания эмбеддингов документов и запросов можно применять:

  • Управляемые сервисы, такие как
    • text-embedding-large-3 от OpenAI
    • gemini-embedding-001 от Google
  • Открытые варианты, включая
    • qwen-embedding-8B от Alibaba
    • Linq-Embed-Mistral от Mistral

После получения эмбеддингов их можно сохранить в векторной базе данных, например:

  • Pinecone
  • Weaviate
  • Milvus

На этом этапе система RAG готова к использованию. В следующем разделе описываются полностью управляемые решения RAG, где достаточно загрузить документ, а все процессы чанкирования, эмбеддинга и поиска выполняются автоматически.

Управляемые сервисы RAG

Для упрощения процесса можно прибегнуть к полностью управляемым решениям RAG. Вот несколько вариантов:

  • Ragie.ai
  • Инструмент поиска по файлам Gemini
  • Инструмент поиска по файлам OpenAI

Эти сервисы существенно упрощают процедуру RAG. Пользователь загружает документы, а сервис самостоятельно выполняет чанкирование, эмбеддинг и вывод результатов. Достаточно предоставить исходные файлы и указать запрос; сервис вернет релевантные документы, которые затем можно передать в LLM для генерации ответов на вопросы.

Несмотря на значительное облегчение, стоит отметить некоторые ограничения управляемых сервисов RAG:

Если документы в формате PDF, их можно загружать напрямую. Однако не все типы файлов поддерживаются. Например, некоторые сервисы не работают с PNG или JPG, что усложняет процесс. В качестве обходного пути можно применить OCR для извлечения текста из изображений и загрузки в формате TXT (который поддерживается), но это добавляет лишние шаги, противоречащие цели использования управляемых решений.

Еще одним недостатком является необходимость загрузки исходных документов в сервис. При этом важно соблюдать требования, такие как GDPR в ЕС. Для некоторых сервисов это может стать проблемой, хотя OpenAI, например, обеспечивает хранение данных в ЕС.


Далее приведен пример использования инструмента поиска по файлам OpenAI, который отличается простотой. Сначала создается векторное хранилище и загружаются документы:

from openai import OpenAI
client = OpenAI()
# Создание векторного хранилища
vector_store = client.vector_stores.create(
    name="<название вашего векторного хранилища>",
)
# Загрузка файла и добавление в векторное хранилище
client.vector_stores.files.upload_and_poll(
    vector_store_id=vector_store.id,
    file=open("filename.txt", "rb")
)

После загрузки и обработки документов их можно запрашивать:

user_query = "What is the meaning of life?"
results = client.vector_stores.search(
    vector_store_id=vector_store.id,
    query=user_query,
)

Как видно, этот код гораздо проще, чем настройка моделей эмбеддингов и векторных баз для самостоятельной сборки RAG.

Инструменты поиска информации

Теперь, когда инструменты поиска информации доступны, можно переходить к агентному поиску. Сначала описывается начальный подход к использованию LLM для нахождения данных, а затем более продвинутый метод.

Сначала поиск, потом ответ

Первоначальный метод предполагает предварительный сбор релевантных документов и их передачу в LLM перед формированием ответа на вопрос пользователя. Это достигается запуском поиска по ключевым словам и RAG, выбором топ-X документов и их подачей в LLM.

Сначала выполняется поиск с помощью RAG:

user_query = "What is the meaning of life?"
results_rag = client.vector_stores.search(
    vector_store_id=vector_store.id,
    query=user_query,
)

Затем проводится поиск по ключевым словам:

def keyword_search(query):
    # логика поиска по ключевым словам
    ...
    return results
results_keyword_search = keyword_search(query)

Далее результаты объединяются, удаляются дубликаты, и содержимое документов передается в LLM для генерации ответа:

def llm_completion(prompt):
    # логика завершения LLM
    return response
prompt = f"""
Given the following context {document_context}
Answer the user query: {user_query}
"""
response = llm_completion(prompt)

В большинстве случаев этот подход дает качественные результаты. Однако существует более эффективный способ агентного поиска информации.

Функции поиска как инструменты

Современные передовые LLM обучаются с учетом агентского поведения, что делает их отличными в использовании инструментов для обработки запросов. LLM можно предоставить набор инструментов, и она самостоятельно решает, когда и как их применять для ответа.

Более оптимальный метод — предоставить RAG и поиск по ключевым словам как инструменты для LLM. Для GPT-5 это реализуется следующим образом:

# Определение пользовательской функции поиска по ключевым словам и предоставление GPT-5 как поиска по ключевым словам, так и RAG (инструмент поиска по файлам)
def keyword_search(keywords):
    # выполнение поиска по ключевым словам
    return results
user_input = "What is the meaning of life?"
tools = [
    {
        "type": "function",
        "function": {
            "name": "keyword_search",
            "description": "Search for keywords and return relevant results",
            "parameters": {
                "type": "object",
                "properties": {
                    "keywords": {
                        "type": "array",
                        "items": {"type": "string"},
                        "description": "Keywords to search for"
                    }
                },
                "required": ["keywords"]
            }
        }
    },
    {
        "type": "file_search",
        "vector_store_ids": ["<vector_store_id>"],
    }
]
response = client.responses.create(
    model="gpt-5",
    input=user_input,
    tools=tools,
)

Этот подход работает эффективнее, поскольку не ограничивается однократным поиском с RAG или по ключевым словам перед ответом. Преимущества включают:

  • Агент самостоятельно определяет необходимость использования инструментов; некоторые запросы не требуют векторного поиска
  • OpenAI автоматически перефразирует запрос, запуская параллельные RAG-запросы с вариациями, генерируемыми на основе исходного
  • Агент может инициировать дополнительные RAG- или ключевые поиски, если информации недостаточно

Последний пункт особенно важен для агентного поиска. Иногда начальный запрос не выявляет нужные данные; агент (GPT-5) распознает это и запускает дополнительные запросы при необходимости. Это повышает качество результатов и вероятность нахождения информации.

Заключение

В этой статье рассмотрены основы агентного поиска информации. Сначала объясняется значимость этого подхода, подчеркивая зависимость от оперативного доступа к данным. Далее описываются инструменты поиска с использованием ключевых слов и RAG. Указывается, что эти инструменты можно применять статически перед подачей результатов в LLM, но предпочтительнее интегрировать их как инструменты для LLM, превращая ее в агента, способного самостоятельно искать информацию. Агентный поиск информации будет набирать популярность, и умение работать с ИИ-агентами станет ключевым навыком для разработки мощных ИИ-приложений в ближайшие годы.