本文档适用于 v0.4.x 版本的 PAI-RAG 服务,提供完整的 API 接口定义、请求示例与核心概念说明,旨在帮助开发者快速、高效地将 PAI-RAG 的能力集成到自己的应用中。
准备工作:获取服务访问地址和Token
通过API接口调用RAG服务前,需要获取RAG服务的访问地址和认证令牌。所有 API 请求都需要在 HTTP Authorization 中携带EAS_TOKEN。
在下文API接口说明中出现的$EAS_SERVICE_URL和$EAS_TOKEN是环境变量,使用前需要先设置。获取方式如下:
登录PAI控制台,在页面上方选择目标地域,并在右侧选择目标工作空间,然后单击进入EAS。
单击目标服务名称,然后在基本信息区域,单击查看调用信息。
在调用信息页面,获取公网/VPC调用地址(EAS_SERVICE_URL)和Token(EAS_TOKEN)。
重要请将EAS_SERVICE_URL末尾的斜杠(/)删除。
使用公网调用地址:调用客户端支持访问公网。
使用VPC调用地址:调用客户端必须与RAG服务位于同一个专有网络内。

获取到EAS_SERVICE_URL和EAS_TOKEN后,建议将它们设置为环境变量,方便后续API调用:
export EAS_SERVICE_URL="您的服务地址"
export EAS_TOKEN="您的Token"设置环境变量后,后续的curl命令可以直接使用$EAS_SERVICE_URL和$EAS_TOKEN引用这些值。
Chat API
Chat API 是一个支持智能代理(Agent)和检索增强生成(RAG) 的流式聊天接口。它扩展了 OpenAI 兼容的聊天协议,支持知识库检索、多步骤推理、外部工具调用等高级功能,适用于构建智能对话系统、知识问答机器人等场景。
推荐调用Chat的方式是配置一个属于你的Chat应用,假设应用名称为my_assistant,并选择合适的知识库、联网搜索配置。
POST $EAS_SERVICE_URL/v1/chat/completions功能描述: 发起一次对话请求。通过指定 model 参数来调用一个预先配置好的 Chat 应用,该应用可能关联了知识库、搜索工具等。
请求体 (application/json)
字段 | 类型 | 是否必填 | 描述 |
| String | 是 | 您创建的 Chat 应用名称。 |
| Array | 是 | 对话历史列表,遵循 OpenAI 格式。 |
| Boolean | 否 | 是否以流式模式返回响应,默认为 |
响应体
与 OpenAI chat.completions 接口的响应格式兼容。
OpenAI客户端调用示例:
from openai import OpenAI
import os
EAS_ENDPOINT = os.getenv("EAS_SERVICE_URL")
EAS_TOKEN = os.getenv("EAS_TOKEN")
client = OpenAI(
base_url=EAS_ENDPOINT,
api_key=EAS_TOKEN
)
response = client.chat.completions.create(
model="my_assistant", # 替换为真实的Chat应用名称
messages=[
{"role": "user", "content": "你好"}
],
stream=True
)
for chunk in response:
print(chunk.choices[0].delta.content)知识库管理
创建知识库
创建一个新的知识库,并可以指定其数据分块、嵌入和检索等配置。
POST $EAS_SERVICE_URL/v1/config/knowledgebases请求 | |
请求头(Headers) | |
Content-Type 请求内容类型。此参数必须设置为 | |
Authorization 请求身份认证。EAS_TOKEN | |
请求体(Request Body) | |
name 知识库名称。 | |
description 知识库的描述信息。 | |
embedding_model 嵌入模型的名称或路径。支持本地或远程模型。 | |
chunk_config 数据分块配置。 | |
retrieval_config 检索策略配置。 |
响应示例
获取知识库列表
获取当前服务下的知识库列表,支持分页。
GET $EAS_SERVICE_URL/v1/config/knowledgebases?page=1&size=10请求 | |
请求头(Headers) | |
Authorization 请求身份认证。EAS_TOKEN | |
URL查询参数(Query parameters) | |
page 页码,默认值为 | |
size 每页返回的数量,默认值为 |
响应示例
获取指定知识库(通过kb_id)
获取指定 ID 的知识库的详细信息。
GET $EAS_SERVICE_URL/v1/config/knowledgebases/{kb_id}请求 | |
请求头(Headers) | |
Authorization 请求身份认证。EAS_TOKEN | |
URL路径参数(Path parameters) | |
kb_id 知识库的唯一标识符。 |
响应示例
修改知识库
修改一个已存在的知识库。
PUT $EAS_SERVICE_URL/v1/config/knowledgebases/{kb_id}请求 | |
请求头(Headers) | |
Content-Type 请求内容类型。此参数必须设置为 | |
Authorization 请求身份认证。EAS_TOKEN | |
URL路径参数(Path parameters) | |
kb_id 知识库的唯一标识符。 | |
请求体(Request Body) | |
请求体参数同创建知识库接口,包括 name、description、embedding_model、chunk_config、retrieval_config 等字段。 |
响应示例
删除指定知识库
删除一个指定的知识库及其包含的所有文件和索引。此操作不可逆,请谨慎使用。
DELETE $EAS_SERVICE_URL/v1/config/knowledgebases/{kb_id}请求 | |
请求头(Headers) | |
Authorization 请求身份认证。EAS_TOKEN | |
URL路径参数(Path parameters) | |
kb_id 知识库的唯一标识符。 |
响应示例
文件管理
上传文件
向指定知识库上传一个或多个文件。这是一个异步接口,会立即返回文件信息,并在后台进行解析和索引。支持的文件格式包括 PDF、DOCX、TXT 等。
POST $EAS_SERVICE_URL/v1/config/knowledgebases/{kb_id}/files请求 | |
请求头(Headers) | |
Content-Type 请求内容类型。此参数必须设置为 | |
Authorization 请求身份认证。EAS_TOKEN | |
URL路径参数(Path parameters) | |
kb_id 知识库的唯一标识符。 | |
请求体参数(Request Body) | |
files 要上传的文件(支持 PDF/DOCX/TXT 等)。可以一次上传多个。 |
响应示例
列出文件
列出指定知识库中的文件,支持按文件名和状态进行筛选和分页。
GET $EAS_SERVICE_URL/v1/config/knowledgebases/{kb_id}/files请求 | |
请求头(Headers) | |
Authorization 请求身份认证。EAS_TOKEN | |
URL路径参数(Path parameters) | |
kb_id 知识库的唯一标识符。 | |
URL查询参数(Query parameters) | |
query 根据文件名进行模糊匹配。 | |
status 根据文件处理状态筛选。不传为全部,可选值: | |
page 页码,默认值为 1。 | |
size 每页返回的数量,默认值为 10。 |
响应示例
获取单个文件信息
获取单个文件的详细信息,常用于轮询文件处理状态。
GET $EAS_SERVICE_URL/v1/config/knowledgebases/{kb_id}/files/{file_id}请求 | |
请求头(Headers) | |
Authorization 请求身份认证。EAS_TOKEN | |
URL路径参数(Path parameters) | |
kb_id 知识库的唯一标识符。 | |
file_id 文件的唯一标识符。 |
响应示例
重新处理文件
触发对一个文件(例如处理失败或内容已更新的文件)的重新处理。这是一个异步操作,会创建一个新的处理任务,并将文件状态重置为 pending。
PUT $EAS_SERVICE_URL/v1/config/knowledgebases/{kb_id}/files/{file_id}请求 | |
请求头(Headers) | |
Content-Type 请求内容类型。此参数必须设置为 | |
Authorization 请求身份认证。EAS_TOKEN | |
URL路径参数(Path parameters) | |
kb_id 知识库的唯一标识符。 | |
file_id 文件的唯一标识符。 |
响应示例
删除文件
从知识库中删除一个指定的文件及其关联的数据块和索引。
DELETE $EAS_SERVICE_URL/v1/config/knowledgebases/{kb_id}/files/{file_id}请求 | |
请求头(Headers) | |
Authorization 请求身份认证。EAS_TOKEN | |
URL路径参数(Path parameters) | |
kb_id 知识库的唯一标识符。 | |
file_id 文件的唯一标识符。 |
响应示例
数据分块管理
查看文件分块
查看指定文件被切分后的数据块列表,支持分页。
GET $EAS_SERVICE_URL/v1/config/knowledgebases/{kb_id}/files/{file_id}/chunks?page=1&size=10请求 | |
请求头(Headers) | |
Authorization 请求身份认证。EAS_TOKEN | |
URL路径参数(Path parameters) | |
kb_id 知识库的唯一标识符。 | |
file_id 文件的唯一标识符。 | |
URL查询参数(Query parameters) | |
page 页码,默认值为 1。 | |
size 每页返回的数量,默认值为 10。 |
响应示例
更新单个 Chunk
更新单个数据块的内容或状态。例如,可以手动修正切分不佳的文本,或禁用某个数据块使其不被检索。
PUT $EAS_SERVICE_URL/v1/config/knowledgebases/{kb_id}/files/{file_id}/chunks/{chunk_id}请求 | |
请求头(Headers) | |
Authorization 请求身份认证。EAS_TOKEN | |
Content-Type application/json | |
URL路径参数(Path parameters) | |
kb_id 知识库的唯一标识符。 | |
file_id 文件的唯一标识符。 | |
chunk_id 数据块的唯一标识符。 | |
请求体(Request Body) | |
text 更新后的数据块文本内容。 | |
active 是否启用该数据块。设置为 false 后,该数据块将不会被检索到。 |
响应示例
取消某个Chunk,不被检索
同更新操作,active字段设为false即可。
元数据管理
元数据可以为您的文档增加结构化信息,从而在检索时实现更精确的过滤,例如:只检索 IT 部门 2024 年之后发布的文档。
知识库级元数据字段定义
为知识库定义一个元数据字段的 Schema,包括字段ID、名称、值类型等。
POST $EAS_SERVICE_URL/v1/config/knowledgebases/{kb_id}/metadata请求 | |
请求头(Headers) | |
Authorization 请求身份认证。EAS_TOKEN | |
Content-Type application/json | |
URL路径参数(Path parameters) | |
kb_id 知识库的唯一标识符。 | |
请求体(Request Body) | |
kb_id 知识库的唯一标识符。 | |
name 字段的显示名称。3~50 字符。 | |
value_type 字段的值类型。enum类型,包含 string, number, datetime 三种类型。 | |
description 字段的描述信息。 |
响应示例
列出元数据
列出该知识库下所有已定义的元数据字段。
GET $EAS_SERVICE_URL/v1/config/knowledgebases/{kb_id}/metadata请求 | |
请求头(Headers) | |
Authorization 请求身份认证。EAS_TOKEN | |
URL路径参数(Path parameters) | |
kb_id 知识库的唯一标识符。 |
响应示例
删除元数据
删除该知识库下指定元数据字段。
DELETE $EAS_SERVICE_URL/v1/config/knowledgebases/{kb_id}/metadata/{metadata_id}请求 | |
请求头(Headers) | |
Authorization 请求身份认证。EAS_TOKEN | |
URL路径参数(Path parameters) | |
kb_id 知识库的唯一标识符。 | |
metadata_id 元数据id。 |
响应示例
文件级元数据绑定
为指定文件绑定具体的元数据值。注意:此接口为覆盖式更新,每次调用都会完全替换该文件上的所有元数据。为避免数据丢失,推荐的操作流程是:先通过 GET 获取文件现有元数据,在本地修改后,再通过此接口提交完整的元数据列表。
POST $EAS_SERVICE_URL/v1/config/knowledgebases/{kb_id}/files/{file_id}/metadata请求 | |
请求头(Headers) | |
Authorization 请求身份认证。EAS_TOKEN | |
Content-Type application/json | |
URL路径参数(Path parameters) | |
kb_id 知识库的唯一标识符。 | |
file_id 文件的唯一标识符。 | |
请求体(Request Body) | |
entries 元数据条目列表。 |
响应示例
检索 API
混合检索(文本 + 向量 + 元数据过滤)
对指定的知识库执行一次独立的检索操作,支持文本、向量和元数据过滤的混合检索。
POST $EAS_SERVICE_URL/v1/retrieval请求 | |
请求头(Headers) | |
Authorization 请求身份认证。EAS_TOKEN | |
Content-Type application/json | |
请求体(Request Body) | |
query 用于检索的查询文本。 | |
knowledge_id 要检索的目标知识库ID。 | |
user_id 用户的唯一标识,用于个性化或日志追踪。 | |
metadata_condition 元数据过滤条件,包含 logical_operator(逻辑运算符:and/or)和 conditions(条件列表)。 | |
retrieval_setting 本次检索的临时配置,会覆盖知识库的默认配置。 |
响应示例
配置Code沙箱
创建或更新沙箱
请求 | |
请求头(Headers) | |
Content-Type 请求内容类型。此参数必须设置为 | |
Authorization 请求身份认证。EAS_TOKEN | |
请求体(Request Body) | |
type 沙箱类型,当前仅支持阿里云FC沙箱,取值 | |
aliyun_id 阿里云账号ID。 | |
interpreter_id 代码解释器ID。 | |
enabled 是否开启沙箱功能。 |
查询当前沙箱配置
curl -X GET "$EAS_SERVICE_URL/api/config/code_sandbox"配置 FAQ
基础路径:/v1/config/apps(应用配置)、/v1/faq-retrieval(FAQ 检索)
所有请求需携带鉴权(如 Authorization: Bearer YOUR_BEARER_TOKEN),并将 {EAS_SERVICE_URL} 替换为实际服务地址。
启用并配置 FAQ
通过更新应用接口开启 FAQ 并写入配置。
PUT {EAS_SERVICE_URL}/v1/config/apps/{id}请求 | |
请求头(Headers) | |
Content-Type 请求内容类型。此参数必须设置为 | |
Authorization 请求身份认证。EAS_TOKEN | |
URL路径参数(Path parameters) | |
id 应用的主键 ID,可通过查询应用接口获得。 | |
请求体(Request Body) | |
app_id 应用的 APP ID。 | |
description 应用描述。 | |
model_id 基模型。 | |
kb_ids 应用使用的知识库,可多选。 | |
enable_faq 是否启用FAQ。 | |
faq_config FAQ 配置。 |
查询应用
curl -X GET "$EAS_SERVICE_URL/v1/config/apps?app_id=your_app_id" \
-H "Authorization: Bearer $EAS_TOKEN"其中:app_id 从下图获取。
创建单条 FAQ
curl -X POST "$EAS_SERVICE_URL/v1/config/apps/{app_id}/faqs" \
-H "Authorization: Bearer $EAS_TOKEN" \
-H 'Content-Type: application/json' \
-d '{
"question": "如何重置密码?",
"answer": "请点击登录页的「忘记密码」按提示操作。",
"active": true
}'查询 FAQ 列表(分页)
curl -X GET "$EAS_SERVICE_URL/v1/config/apps/{app_id}/faqs?page=1&size=100" \
-H "Authorization: Bearer $EAS_TOKEN"更新单条 FAQ
curl -X PUT "$EAS_SERVICE_URL/v1/config/apps/{app_id}/faqs/{faq_item_id}" \
-H "Authorization: Bearer $EAS_TOKEN" \
-H 'Content-Type: application/json' \
-d '{
"question": "如何修改密码?",
"answer": "登录后进入「账号设置」-「安全」中修改。",
"active": true
}'删除单条 FAQ
curl -X DELETE "$EAS_SERVICE_URL/v1/config/apps/{app_id}/faqs/{faq_item_id}" \
-H "Authorization: Bearer $EAS_TOKEN"批量上传 FAQ 文件(Excel)
使用 multipart/form-data:上传字段名为 files(可多文件),可选表头与列映射 table_config(JSON 字符串)。支持 .xlsx、.xls。
curl -X POST "$EAS_SERVICE_URL/v1/config/apps/{app_id}/faq-files" \
-H "Authorization: Bearer $EAS_TOKEN" \
-F 'files=@/path/to/faq.xlsx' \
-F 'table_config={"header_index_max":0,"question_column_index":0,"answer_column_index":1}'table_config 说明:
header_index_max:表头行数(0 表示第一行为表头);question_column_index:问题列索引(从 0 开始);answer_column_index: 答案列索引。
FAQ 检索(独立调用)
不经过对话,直接按问题检索 FAQ 结果:
curl -X POST "$EAS_SERVICE_URL/v1/faq-retrieval" \
-H "Authorization: Bearer $EAS_TOKEN" \
-H 'Content-Type: application/json' \
-d '{
"chatapp_id": "your_app_id",
"query": "用户输入的问题"
}'可选请求字段:user_id、retrieval_setting(如 top_k、similarity_threshold 等)。未传 retrieval_setting 时使用该应用 FAQ 配置中的默认值。