Большие языковые модели (LLM), такие как Gemini, кардинально изменили возможности в области разработки программного обеспечения. Их способность понимать, генерировать и рассуждать о тексте поражает воображение. Тем не менее, у них есть фундаментальное ограничение: они знают только то, на чем обучались. Они не осведомлены о внутренних документах компании, конкретном коде проекта или свежей научной статье, опубликованной вчера.
Чтобы создавать умные и практичные приложения, необходимо преодолеть этот разрыв и опирать обширные способности модели к рассуждениям на собственные специфические, конфиденциальные данные. Это область Retrieval-Augmented Generation (RAG). Эта мощная методика извлекает релевантную информацию, обычно из внешней базы знаний. Затем она передает ее LLM в качестве контекста для генерации более точного, подходящего и проверяемого ответа на запросы.
Хотя этот подход чрезвычайно эффективен, создание надежной RAG-системы с нуля представляет собой серьезную инженерную задачу. Она включает сложную последовательность этапов:
- Ввод данных и разделение на фрагменты. Разбор различных форматов файлов (PDF, DOCX и т.д.) и разумное разделение их на меньшие, семантически значимые части.
- Генерация эмбеддингов. Применение модели эмбеддингов для преобразования этих текстовых фрагментов в числовые векторные представления.
- Хранение векторов. Организация, управление и масштабирование специализированной векторной базы данных для хранения этих эмбеддингов с целью эффективного поиска.
- Логика извлечения. Реализация системы, которая принимает запрос пользователя, создает для него эмбеддинг и проводит поиск по сходству в векторной базе данных для нахождения наиболее релевантных фрагментов.
- Внедрение контекста. Динамическое вставление извлеченных фрагментов в промпт для LLM таким образом, чтобы модель могла эффективно использовать эту информацию. Каждый из этих этапов требует тщательного обдумывания, управления инфраструктурой и постоянного обслуживания.
Недавно, продолжая усилия по завершению эры традиционного RAG в его нынешнем виде, Google приобрел еще один новый продукт, ориентированный на эту сферу. Новый инструмент поиска по файлам от Google полностью устраняет необходимость в разделении на фрагменты, создании эмбеддингов и векторизации документов перед проведением семантических поисков по ним.
Что такое инструмент поиска по файлам Google?
В основе инструмент поиска по файлам представляет собой мощный слой абстракции над полной RAG-системой. Он управляет всем жизненным циклом данных, от ввода до извлечения, предлагая простой, но эффективный способ опирать ответы Gemini на документы пользователя.
Разберем его ключевые компоненты и проблемы, которые они решают.
1) Простой, интегрированный опыт для разработчиков
Поиск по файлам не является отдельным API или сложной внешней службой, которую нужно координировать. Он реализован как инструмент непосредственно в существующем API Gemini. Эта бесшовная интеграция позволяет добавить мощные возможности RAG в приложение всего несколькими строками кода. Инструмент автоматически...
- Безопасно хранит загруженные документы.
- Применяет продвинутые стратегии для разбиения документов на подходящие по размеру, coherentные фрагменты для оптимальных результатов извлечения.
- Обрабатывает файлы, генерирует эмбеддинги с использованием передовых моделей Google и индексирует их для быстрого извлечения.
- Выполняет извлечение и внедряет релевантный контекст в промпт, отправляемый в Gemini.
2) Мощный векторный поиск в основе
Движок извлечения работает на модели gemini-embedding-001, предназначенной для высокопроизводительного семантического поиска. В отличие от традиционного поиска по ключевым словам, который находит только точные совпадения, векторный поиск понимает смысл и контекст запроса. Это позволяет извлекать релевантную информацию из документов даже если формулировка запроса пользователя полностью отличается.
3) Встроенные цитаты для проверяемости
Доверие и прозрачность критически важны для корпоративных AI-приложений. Инструмент поиска по файлам автоматически добавляет метаданные заземления в ответ модели. Эти метаданные содержат цитаты, указывающие точно, какие части каких исходных документов использовались для генерации ответа.
Это важная функция, которая позволяет:
- Проверять точность. Легко анализировать источники модели для подтверждения правильности ответа.
- Формировать доверие пользователей. Показывать, откуда взята информация, повышая уверенность в системе.
- Обеспечивать глубокое исследование. Предоставлять ссылки на исходные документы, позволяя пользователям углубляться в интересующие темы.
4. Поддержка широкого спектра форматов.
База знаний редко состоит из простых текстовых файлов. Инструмент поиска по файлам поддерживает множество стандартных форматов файлов сразу, включая PDF, DOCX, TXT, JSON и файлы различных языков программирования и приложений. Эта гибкость позволяет создавать всестороннюю базу знаний из существующих документов без необходимости в трудоемкой предварительной обработке или конвертации данных.
5. Доступность
Google сделал использование инструмента поиска по файлам чрезвычайно экономичным. Хранение и эмбеддинг запросов бесплатны. Платить нужно только за эмбеддинги исходного содержимого документов, что может стоить всего 0,15 доллара за 1 миллион токенов (на основе, например, модели эмбеддингов gemini-embedding-001).
Использование поиска по файлам
Теперь, когда стало clearer, что представляет собой инструмент поиска по файлам, рассмотрим, как его применять в рабочих процессах. Для демонстрации приведен пример кода на Python, показывающий, как вызывать и использовать поиск по файлам.
Пример кода — простой поиск в PDF-документе
Для тестирования был загружен руководством пользователя для мобильного телефона Samsung S25 с их сайта на локальный компьютер. Оно насчитывает более 180 страниц. Получить его можно по этой ссылке.
Запустите Jupyter notebook и введите следующий код в ячейку.
import time
from google import genai
from google.genai import types
client = genai.Client(api_key='YOUR_API_KEY')
store = client.file_search_stores.create()
upload_op = client.file_search_stores.upload_to_file_search_store(
file_search_store_name=store.name,
file='SM-S93X_UG_EU_15_Eng_Rev.2.0_250514.pdf'
)
while not upload_op.done:
time.sleep(5)
upload_op = client.operations.get(upload_op)
# Use the file search store as a tool in your generation call
response = client.models.generate_content(
model='gemini-2.5-flash',
contents='What models of phone does this document apply to ...',
config=types.GenerateContentConfig(
tools=[
types.Tool(
file_search=types.FileSearch(
file_search_store_names=[store.name]
)
)
]
)
)
print(response.text)После импорта необходимых библиотек создается "магазин поиска по файлам", который служит контейнером для данных и индексов загруженных файлов. Затем файл загружается в магазин, и ожидается завершения загрузки.
Далее вызывается функция generate_content, которая позволит выбранной модели (в примере Gemini 2.5 flash) ответить на вопрос о загруженном файле, после чего выводится ответ модели.
Вот ответ, полученный при запуске указанного кода.
This document applies to the following phone models: SM-S931B, SM-S931B/DS, SM-S936B, SM-S936B/DS, SM-S937B, SM-S937B/DS, SM-S938B, and SM-S938B/DS. It also specifically mentions Galaxy S25 Ultra, Galaxy S25 Edge, Galaxy S25+, and Galaxy S25.Точность этой информации можно подтвердить, просмотрев первую страницу PDF, где приведен список соответствующих моделей.

Поглубже разберемся и зададим более сложный вопрос. Предположим, нужно узнать, как настроить автоматическое выключение экрана при неиспользовании. На странице 156 PDF указано следующее:
Вы можете настроить экран на автоматическое выключение, когда устройство не используется. Откройте Настройки, нажмите Дисплей → Тайм-аут экрана, и выберите желаемое время ожидания перед выключением экрана.
Сможет ли инструмент поиска по файлам найти это?
... ... ...
# Use the file search store as a tool in your generation call
response = client.models.generate_content(
model='gemini-2.5-flash',
contents='How do I set the screen to turn off automatically when not in use',
config=types.GenerateContentConfig(
tools=[
types.Tool(
file_search=types.FileSearch(
file_search_store_names=[store.name]
)
)
]
)
)
print(response.text)И вот ответ?
To set your device's screen to turn off automatically when not in use, you can adjust the "Screen timeout" setting. This setting determines how long the device waits before turning off the display's backlight. For a Samsung device (as indicated by the provided user guide), you can typically find this option by navigating to: Settings → Display → Screen timeout. There, you can select the desired length of time before the screen turns off.Стоит отметить, что поиск по файлам может также использовать внутреннюю базу знаний модели для ответов на вопросы, не обязательно обращаясь к хранилищу документов.
Работа с несколькими входными файлами
Если корпус документов состоит из нескольких файлов, их легко включить все с помощью простого цикла for, но следует учитывать некоторые ограничения поиска по файлам. Согласно документации Google, эти ограничения включают:
API поиска по файлам имеет следующие лимиты для обеспечения стабильности сервиса:
Максимальный размер файла / на документ: 100 МБ
Общий размер магазинов поиска по файлам в проекте (в зависимости от уровня пользователя):
Бесплатный: 1 ГБ
Уровень 1: 10 ГБ
Уровень 2: 100 ГБ
Уровень 3: 1 ТБ
Управление разделением на фрагменты
При добавлении файла в магазин поиска по файлам система автоматически разбивает его на меньшие фрагменты, создает эмбеддинги и индексирует содержимое, а затем загружает. Если требуется точная настройка этого разделения, можно использовать опцию chunking_config для установки лимитов на размер фрагмента и указания количества пересекающихся токенов между фрагментами. Вот фрагмент кода, демонстрирующий, как это сделать.
... ...
operation = client.file_search_stores.upload_to_file_search_store(
file_search_store_name=file_search_store.name,
file='SM-S93X_UG_EU_15_Eng_Rev.2.0_250514.pdf',
config={
'chunking_config': {
'white_space_config': {
'max_tokens_per_chunk': 200,
'max_overlap_tokens': 20
}
}
}
)
... ...Чем поиск по файлам отличается от других инструментов Google, связанных с RAG, таких как заземление контекста и LangExtract?
Ранее были рассмотрены две похожие разработки Google в этой области: заземление контекста и LangExtract. На первый взгляд, они выполняют схожие функции. И это верно — до определенной степени.
Главное отличие в том, что поиск по файлам является настоящим продуктом RAG, поскольку он постоянно хранит эмбеддинги документов, в то время как другие два инструмента этого не делают. Это означает, что после размещения эмбеддингов в магазине поиска по файлам они остаются там навсегда или до удаления по выбору. Нет необходимости перезагружать файлы каждый раз при ответе на вопросы по ним.
Для справки приведена таблица различий.
| Функция | Google File Search | Google Context Grounding | LangExtract |
|---|---|---|---|
| Основная цель | Отвечать на вопросы и генерировать контент из приватных документов. | Связывать ответы модели с проверенными источниками для повышения точности и снижения галлюцинаций. | Извлекать конкретные, структурированные данные (например, JSON) из неструктурированного текста. |
| Вход | Запрос пользователя и загруженные файлы (PDF, DOCX и т.д.). | Запрос пользователя и настроенный источник данных (например, Google Search, URL). | Неструктурированный текст плюс схема или промпт с описанием извлекаемого. |
| Выход | Разговорный ответ, опирающийся на предоставленные файлы, с цитатами. | Проверенный на фактах ответ на естественном языке с ссылками или отсылками. | Структурированные данные (например, JSON), сопоставляющие информацию с исходным текстом. |
| Подлежащий процесс | Управляемая RAG-система, которая разбивает, эмбеддит и индексирует файлы. | Соединяет модель с источником информации; использует поиск по файлам, Google Search и т.д. | Библиотека на базе LLM для целевого извлечения информации через примеры. |
| Типичный сценарий использования | Чатбот для базы знаний компании или руководств. | Ответы на недавние события с использованием живых результатов Google Search. | Извлечение имен, лекарств, дозировок из клинических заметок для базы данных. |
Удаление магазина поиска по файлам
Google автоматически удаляет исходное содержимое файлов из хранилища через 48 часов, но сохраняет эмбеддинги документов, позволяя продолжать запросы к содержимому. Если они больше не нужны, их можно удалить. Это делается программно, как показано в фрагменте кода ниже.
... ... ...
# deleting the stores
# List all your file search stores
for file_search_store in client.file_search_stores.list():
name = file_search_store.name
print(name)
# Get a specific file search store by name
my_file_search_store = client.file_search_stores.get(name='your_file_search_store_name')
# Delete a file search store
client.file_search_stores.delete(name=my_file_search_store.name, config={'force': True})Итог
Традиционно создание RAG-системы требовало сложных шагов — ввода данных, разделения на фрагменты, генерации эмбеддингов, настройки векторных баз данных и внедрения извлеченного контекста в промпты. Новый инструмент поиска по файлам от Google абстрагирует все эти задачи, предлагая полностью управляемое, сквозное решение RAG, интегрированное напрямую в API Gemini через вызов generateContent.
В статье описаны ключевые особенности и преимущества поиска по файлам, а также приведен полный рабочий пример кода на Python для его применения. Пример демонстрирует загрузку большого PDF-файла (руководства по телефону Samsung) в магазин поиска по файлам и запрос к нему через модель и API Gemini для точного извлечения конкретной информации. Также показан код для тонкой настройки стратегии разделения документа на фрагменты, если стандартная, используемая поиском по файлам, не подходит. Наконец, для минимизации затрат предоставлен фрагмент кода для удаления ненужных магазинов после завершения работы.
При написании статьи отметилось, что этот инструмент имеет много общего с другими продуктами Google в этой сфере, такими как LangExtract и заземление контекста. Однако объяснены ключевые различия между ними, с поиском по файлам как единственной полноценной RAG-системой из трех, и выделены отличия в удобной табличной форме.
В инструменте поиска по файлам Google есть многое, что не удалось осветить в статье, включая использование метаданных файлов и цитат. Для полного описания всех возможностей поиска по файлам рекомендуется ознакомиться с документацией API Google.