大模型应用
用 Vertex AI RAG Engine…
当你需要通过 Google Vertex AI RAG Engine 列出/查看语料库、检索上下文或生成基于 RAG 语料库的回答时使用。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 38/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 55/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 58/100 ×0.15
适用场景
用 Vertex AI RAG Engi特定
解决思路
- 环境准备:先执行 `gcloud auth login` 和 `gcloud auth application-default login` 完成 Google Cloud 认证并配置 ADC;再执行 `python3 -m venv ~/rag_agent_venv` 创建虚拟环境并用 `source ~/rag_agent_venv/bin/activate` 激活;然后执行 `pip install google-cloud-aiplatform google-genai` 安装 SDK;每次运行 Python 代码前都要确保该虚拟环境已激活。
- 必须使用 `vertexai` Python SDK 执行 RAG Engine 操作,不要用原始 REST 调用或 MCP 工具。
- 安全分级:只读操作(`list_corpora`、`list_files`、`get_corpus`、`retrieval_query`)无需确认,直接执行。
- 安全分级:消耗计算资源的只读操作(`client.models.generate_content`)必须先进行交互式确认,提供 Yes/No 选项,并在确认提示中明确列出目标语料库 ID、查询文本、目标模型等关键参数;不得用自然语言模糊描述代替参数列表。
- 确认必须在同一轮对话中停止并等待用户回复,只有用户明确回复 Yes/批准后,才能在下一轮执行生成代码。
- 确认提示的黄金示例:说明将执行带以下参数的 grounded content generation,并列出 Target Corpus ID、Target Model、Query Text,最后询问 Do you confirm? [Yes/No]。
- 工作流决策:若用户未提供 Project ID、Region、Corpus ID,先执行列出语料库和文件进行发现,仅在发现失败时才询问用户;若已提供则继续。
- 根据任务类型选择操作:列出语料库和文件、检查语料库、检索上下文、或使用 RAG Engine 回答问题。
- 生成脚本前,必须把脚本中的占位符(如 `{project_id}`、`{region}`、`{corpus_id}`)动态替换为用户提供的实际值。
- 列出语料库:用 `vertexai.init(project="{project_id}", location="{region}")` 初始化,然后用 `list(rag.list_corpora())` 自动分页列出全部语料库并打印名称与显示名;对超大项目可用 `rag.list_corpora(page_size=10)` 手动分页,并通过 `pager.next_page_token` 获取下一页。
- 列出文件:用 `list(rag.list_files(corpus_name=corpus_name))` 自动分页列出语料库内文件,打印 `display_name` 与 `name`,并根据扩展名(如 .pdf、.txt)判断文件类型。
- 检查语料库:用 `rag.get_corpus(name=corpus_name)` 获取指定语料库详情,打印 `corpus.name` 和 `corpus.display_name`。
- 检索上下文:用 `rag.retrieval_query(rag_corpora=[corpus_name], text=query, similarity_top_k=3)` 检索相关上下文,遍历 `response.contexts.contexts` 打印 `context.text` 和 `context.source_uri`。
- 生成有依据回答:用 `genai.Client(enterprise=True, project="{project_id}", location="{region}")` 创建客户端,构造 `types.Tool` 并设置 `retrieval=types.Retrieval(vertex_rag_store=types.VertexRagStore(rag_resources=[types.VertexRagStoreRagResource(rag_corpus=corpus_name)], rag_retrieval_config=types.RagRetrievalConfig(top_k=3, filter=types.RagRetrievalConfigFilter(vector_similarity_threshold=0.5))))`,再调用 `client.models.generate_content(model="gemini-2.5-flash", contents="...", config=types.GenerateContentConfig(tools=[rag_tool]))` 并打印 `response.text`。
适用边界 · 注意事项
- 不要用于标准数据库查询(应使用 SQL/Spanner 相关技能)。
- 不要用于 Google Workspace RAG。
- 不要用于其他 RAG 产品(如 gRAG)。