OpenAI RAG 集成
本指南说明如何在 Semantic Router 中使用 OpenAI 的 File Store 与 Vector Store API 实现 RAG(检索增强生成),流程参考 OpenAI Responses API cookbook。
概述
OpenAI RAG 后端对接 OpenAI 的 File Store 与 Vector Store API,提供一等公民的 RAG 体验。支持两种工作流模式:
- 直接检索模式(默认):使用向量库搜索 API 同步检索
- 基于工具的模式:在请求中加入
file_search工具(Responses API 工作流)
架构
┌─────────────┐
│ Client │
└──────┬──────┘
│
▼
┌─────────────────────────────────────┐
│ Semantic Router │
│ ┌───────────────────────────────┐ │
│ │ RAG Plugin │ │
│ │ ┌─────────────────────────┐ │ │
│ │ │ OpenAI RAG Backend │ │ │
│ │ └──────┬──────────────────┘ │ │
│ └─────────┼──────────────────── ┘ │
└────────────┼─────────────────────── ┘
│
▼
┌─────────────────────────────────────┐
│ OpenAI API │
│ ┌──────────────┐ ┌──────────────┐ │
│ │ File Store │ │Vector Store │ │
│ │ API │ │ API │ │
│ └──────────────┘ └──────────────┘ │
└─────────────────────────────────────┘
前置条件
- 具备 File Store 与 Vector Store API 访问权限的 OpenAI API Key
- 文件已上传至 OpenAI File Store
- 已创建向量库并关联文件
配置
基础配置
在决策配置中加入 OpenAI RAG 后端:
decisions:
- name: rag-openai-decision
signals:
- type: keyword
keywords: ["research", "document", "knowledge"]
plugins:
rag:
enabled: true
backend: "openai"
backend_config:
vector_store_id: "vs_abc123" # 你的向量库 ID
api_key: "${OPENAI_API_KEY}" # 或使用环境变量
max_num_results: 10
workflow_mode: "direct_search" # 或 "tool_based"
高级配置
rag:
enabled: true
backend: "openai"
similarity_threshold: 0.7
top_k: 10
max_context_length: 5000
injection_mode: "tool_role" # 或 "system_prompt"
on_failure: "skip" # 或 "warn" 或 "block"
cache_results: true
cache_ttl_seconds: 3600
backend_config:
vector_store_id: "vs_abc123"
api_key: "${OPENAI_API_KEY}"
base_url: "https://api.openai.com/v1" # 可选,默认 OpenAI
max_num_results: 10
file_ids: # 可选:限制检索文件
- "file-123"
- "file-456"
filter: # 可选:元数据过滤
category: "research"
published_date: "2024-01-01"
workflow_mode: "direct_search" # 或 "tool_based"
timeout_seconds: 30