RAG (Retrieval-Augmented Generation,检索增强生成) 是一种结合了检索和生成能力的AI技术。它通过以下步骤工作:
南开Wiki的RAG接口让你能够利用校园知识库回答用户问题,提供更准确、更相关的信息。
与纯粹的生成模型相比,RAG有以下优势:
import requests
url = "https://nkuwiki.com/agent/rag" # 生产环境
# url = "http://localhost:8000/agent/rag" # 开发环境
payload = {
"query": "南开大学历史",
"tables": ["wxapp_posts"],
"max_results": 3,
"format": "markdown"
}
headers = {
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
result = response.json()
print(result["response"]) # 输出生成的回答
// 在微信小程序中调用RAG接口
wx.request({
url: 'https://nkuwiki.com/agent/rag',
method: 'POST',
data: {
query: '南开大学有哪些著名校友?',
tables: ['wxapp_posts', 'wechat_nku'],
max_results: 5,
format: 'markdown'
},
header: {
'content-type': 'application/json'
},
success(res) {
console.log(res.data.response)
// 处理回答...
}
})
你可以同时查询多个知识来源:
payload = {
"query": "南开大学招生信息",
"tables": ["wxapp_posts", "wechat_nku", "website_nku"],
"max_results": 5
}
RAG接口支持三种输出格式:
markdown
:适合需要富文本展示的场景text
:纯文本格式,适合简单场景html
:适合网页展示# HTML格式输出
payload = {
"query": "南开大学专业设置",
"format": "html"
}
增强版RAG接口支持查询改写,能够提高检索质量:
url = "https://nkuwiki.com/agent/rag2"
payload = {
"query": "怎样申请奖学金",
"tables": ["wxapp_posts"],
"query_bot_id": "rewriter", # 查询改写机器人
"flash_bot_id": "flash" # 回答生成机器人
}
response = requests.post(url, json=payload, headers=headers)
result = response.json()
print(f"原始查询: {result['original_query']}")
print(f"改写查询: {result['rewritten_query']}")
print(result["response"])
清晰的查询:提供明确、具体的查询问题,以获得更精确的回答
选择合适的表:根据需求选择合适的知识源
wxapp_posts
, wxapp_comments
官方信息:website_nku
, wechat_nku
控制结果数量:通过max_results
参数控制检索结果数量,平衡速度和全面性
错误处理:实现完善的错误处理机制,应对可能的API异常
用户体验:使用流式响应(stream=true
)可以提供更好的用户体验,特别是对于长回答
常见问题及解决方案:
rag2
接口进行查询改写为方便开发和测试,可以使用我们提供的简化测试环境:
http://localhost:8888/rag
该环境提供与正式API相同的接口格式,但使用模拟数据,适合前端开发和接口集成测试。