Google 在 Gemini API 中引入文件搜索工具

作者:Ivan Solovyev (Google DeepMind,产品经理)、Animesh Chatterji(Google DeepMind,软件工程师)
原文地址:Introducing the File Search Tool in Gemini API

今天,我们正式推出文件搜索工具。这是一个直接内置于 Gemini API 的全托管 RAG 系统,它将检索流程进行了抽象化处理,让您可以把精力集中在应用构建上。文件搜索为 Gemini 提供了一种简单、集成且可扩展的方式来基于您的数据生成内容,让响应结果更加准确、相关且可验证。

为了让所有开发者都能简单且经济地使用文件搜索,我们将存储费用和查询时的嵌入生成费用全部免除。您只需在首次索引文件、创建嵌入时付费,固定价格为每百万个令牌 0.15 美元(或对应嵌入模型的实际费用,本例中使用的是 gemini-embedding-001)。这种全新的计费方式让文件搜索工具在构建和扩展时既简单又极具成本优势。

文件搜索的工作原理

文件搜索通过帮您处理 RAG 的复杂操作来提升开发效率。相比自行搭建管理系统,它提供了一个更加友好的解决方案。

简洁集成的开发体验:我们简化了整个 RAG 流程。文件搜索会自动处理文件存储、优化分块策略、生成嵌入,并将检索到的上下文动态注入您的提示词中。它在现有的 generateContent API 内运行,上手非常容易。

强大的向量搜索能力:文件搜索基于我们最新的尖端 Gemini 嵌入模型,通过向量搜索来理解用户查询的语义和上下文。即使用户没有使用准确的关键词,它也能从您的文档中找到相关信息。

自动生成引用:模型的回答会自动附带引用信息,标明使用了文档的哪些部分来生成答案,让验证过程变得简单。

广泛的格式支持:您可以使用多种文件格式构建完整的知识库,包括 PDF、DOCX、TXT、JSON 以及众多常见编程语言的文件类型(完整的支持格式列表请查看文档)。

您可以通过我们在 Google AI Studio 中推出的新演示应用(需要付费 API 密钥)来体验文件搜索工具的实际效果。

基于 Gemini API 新文件搜索工具的"询问手册"演示应用

开发者的使用案例

参与我们早期体验计划的开发者已经在用它打造各种出色的应用,从智能客服机器人、内部知识助手到创意内容发现平台,应有尽有。让我们听听一位早期体验开发者的分享。

Phaser Studio 开发的 AI 驱动游戏生成平台 Beam 已经取得了不错的初步成效。Beam 将文件搜索集成到工作流程中,每天针对不断扩充的模板数据库执行成千上万次搜索。文件搜索可以在所有语料库中并行处理查询,并在 2 秒内完成结果整合,这相比以前需要花费数小时的手动交叉检索有了质的飞跃。

在 Beam,我们正在利用文件搜索来大幅提升游戏生成能力。我们的系统依托一个包含超过 3,000 个文件的资料库,这些文件分布在六个活跃的语料库中,涵盖了模板、组件、设计文档以及 Phaser.js 相关知识。文件搜索让我们能够即时找到所需的资料,无论是子弹模式的代码片段、游戏类型模板,还是来自 Phaser "大脑"语料库的架构指导。效果非常显著——过去需要几天时间才能完成原型的创意,现在几分钟内就能变成可玩的游戏。借助 Gemini 和这些强大的工具,我们正在构建一个让每位玩家都能成为创作者的未来。Phaser Studio CTO Richard Davey

开始使用文件搜索工具

from google import genai
from google.genai import types

client = genai.Client()
store = client.file_search_stores.create()

upload_op = client.file_search_stores.upload_to_file_search_store(
    file_search_store_name=store.name,
    file='path/to/your/document.pdf'
)

while not upload_op.done:
  time.sleep(5)
  upload_ops = 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 does the research say about ...',
    config=types.GenerateContentConfig(
        tools=[types.Tool(
            file_search=types.FileSearch(
                file_search_store_names=[store.name]
            )
        )]
    )
)
print(response.text)

# Support your response with links to the grounding sources.
grounding = response.candidates[0].grounding_metadata
sources = {c.retrieved_context.title for c in grounding.grounding_chunks}
print('Sources:', *sources)

访问文件搜索文档了解详情,或者在 Google AI Studio 中查看我们的演示应用,您还可以对其进行改编,打造属于自己的应用。