本文为您介绍如何在大模型RAG对话系统中集成网络搜索功能,通过网络搜索获取内容,并将搜索结果传递给大语言模型进行推理,从而轻松搭建一个具备联网搜索能力的AI智能问答系统,提升用户体验和信息检索的准确性。
前提条件
已创建专有网络(VPC)、交换机和安全组。具体操作,请参见搭建IPv4专有网络和创建安全组。
已部署RAG服务和大语言模型服务,支持自定义部署和场景化一键部署。具体操作,请参见自定义部署RAG服务或大模型RAG对话系统。
请注意,RAG服务和大语言模型服务需选择相同的专有网络。
由于EAS服务默认不通公网,若RAG服务使用网络搜索功能,需要给EAS配置公网连接。
步骤一:开通网络搜索服务
本文将以阿里云通用搜索服务和Bing搜索为例,介绍如何开通搜索服务。
阿里云通用搜索服务
按照以下流程开通阿里云通用搜索服务:
单击官网申请开通链接,按照界面操作指引开通信息查询服务-通用搜索功能,其中性能规格默认选择QPS30。
申请开通后,系统将自动开通免费测试接口,5分钟后可试用。默认限额为:5 QPS、1000次调用/天、15天有效期。您可以前往信息查询服务控制台查看服务开通情况,如下图所示,表明测试接口已开通。更多关于通用搜索产品的测试开通、正式开通流程说明,请参见联网搜索【测试/正式】开通说明。
(可选)为RAM子用户授权。
Bing搜索
请单击azure链接,并按照界面操作指引申请Bing API Key。Bing搜索提供免费版和付费版,请根据需要选择合适的版本。
步骤二:配置RAG对话系统
在模型在线服务(EAS)页面,单击RAG服务的服务方式列下的查看Web应用,进入WebUI页面。在该页面完成以下配置。
配置LLM大语言模型
如果您使用场景化部署-LLM一体化部署方式部署RAG服务和LLM服务,系统已默认在RAG服务上配置了LLM服务,您可以忽略以下操作步骤。如果您使用自定义部署方式部署RAG服务,则需要按照以下步骤配置LLM大语言模型。
获取调用信息。
在模型在线服务(EAS)页面,单击大语言模型服务名称,进入服务详情页面。
在基本信息区域,单击查看调用信息。
在调用信息对话框的VPC地址调用页签,获取服务访问地址和Token。
通过公网地址访问LLM服务:需为RAG服务配置具备公网访问能力的VPC,详情请参见配置公网连接。
通过内网地址访问LLM服务:RAG服务和LLM服务需使用相同的专有网络。
在WebUI页面的settings页签,配置Large Language Model为已部署的大语言模型服务。
参数
描述
参数
描述
LLM Base URL
填入已部署的大语言模型服务的访问地址。例如
http://****0327099****.vpc.cn-hangzhou.pai-eas.aliyuncs.com/api/predict/quickstart_20250208_hnyx
。API Key
填入已部署的大语言模型服务的Token。
Model Name
当使用加速部署-vLLM方式部署服务时,需填入相应的模型名称。使用其他方式部署服务时,直接填入default或保持默认配置。
配置网络搜索
在WebUI页面的Chat页签中,根据您的需求进行以下任一网络搜索配置:
配置阿里云通用搜索服务
Which query do you want to use:选择Chat(Web Search)。
Search Engine:选择aliyun。
Search Count:当QPS限制为1时,SearchCount的最大值不能超过10。
Endpoint:服务Endpoint:
支持通过公网发起调用:iqs.cn-zhangjiakou.aliyuncs.com。请确保已开通公网NAT网关,详情请参见配置公网连接。
如下地域也支持通过阿里云VPC发起调用:
北京Region:iqs-vpc.cn-beijing.aliyuncs.com
上海Region:iqs-vpc.cn-shanghai.aliyuncs.com
张家口Region:iqs-vpc.cn-zhangjiakou.aliyuncs.com
Access Key ID & Access Key Secret:请填写已获取的AccessKey。
配置Bing搜索
Which query do you want to use:选择Chat(Web Search)。
Search Engine:选择bing。
Bing API Key:配置为已申请的API Key。
步骤三:WebUI页面调试
在WebUI页面的Chat页签中进行问答测试。
当返回结果无误后,您可以参考步骤四:API调用进行标准化调用。当您在WebUI页面的Chat页签中选中Default Search Web时,API调用将默认启用网络搜索功能(适用于配置兼容OpenAI协议的网页或客户端)。
步骤四:API调用
PAI-RAG服务已兼容OpenAI接口协议,您可以按照下列方式进行标准化调用。
1.获取调用信息
单击RAG服务名称,进入服务详情页面。
在基本信息区域,单击查看调用信息。
在调用信息对话框的公网地址调用页签,获取服务访问地址和Token。
2.调用服务
支持通过HTTP或Python SDK进行调用。
HTTP调用
调用地址:
<eas_url>/v1/chat/completions
请求方式:POST
请求HEADERS:'Authorization: EAS_TOKEN' # EAS调用Token
HTTP Body(请求体)
示例配置
{ "model": "default", "messages": [ {"role": "user","content": "你好"}, {"role": "assistant","content": "你好,有什么能帮到您?"}, {"role": "user", "content": "浙江省会是哪里"}, {"role": "assistant", "content": "杭州是浙江的省会。"}, {"role": "user","content": "有哪些好玩的"} ], "stream": true, "search_web": true, "index_name": "default_index" }
参数说明如下:
参数
描述
参数
描述
model
模型名称,默认为default。
stream
配置为true,表示使用流式输出。
index_name
索引名称,如果不传将使用默认索引default_index。具体使用方法,请参见如何使用RAG服务进行知识库数据隔离?。
search_web
模型在生成文本时是否会参考互联网搜索结果。取值如下:
True:启用互联网搜索,模型会将搜索结果作为文本生成过程中的参考信息,但模型会基于其内部逻辑判断是否使用互联网搜索结果。如果模型没有进行互联网搜索,建议优化Prompt。此外,启用互联网搜索功能可能会增加Token的消耗。
False(默认值):关闭互联网搜索,搜索本地知识库。
messages
历史对话信息和当前查询内容。
调用方法
支持以下几种调用方法:
cURL在线调试Postman示例代码如下:
curl -X POST <eas_url>/v1/chat/completions -H 'Authorization: <eas_token>' -H 'Content-Type: application/json' -d '{"model": "default", "search_web": true, "index_name": "default_index", "messages": [{"role": "user","content": "你好"}, {"role": "assistant","content": "你好,有什么能帮到您?"}, {"role": "user", "content": "浙江省会是哪里"}, {"role": "assistant", "content": "杭州是浙江的省会。"}, {"role": "user","content": "有哪些好玩的"}], "stream": false}'
其中:
<eas_url>:替换为RAG服务访问地址。
<eas_token>:替换为RAG服务Token。
在模型在线服务(EAS)页面,单击目标服务操作列下的在线调试,进入在线调试页面。
在调试页面的在线调试请求参数区域的Body处填写已准备好的请求体。并在请求URL文本编辑框中添加
/v1/chat/completions
。单击发送请求。
按照下图示例发送服务请求
请求方式选择POST,并输入请求地址
<eas_url>/v1/chat/completions
和请求体,其中<eas_url>需替换为RAG服务访问地址。示例如下:返回示例
流式输出
非流式输出
返回格式
非流式输出流式输出示例结果如下:
{ "id": "8df97a998f29485fb6b8f0fa1d65****", "choices": [ { "finish_reason": "stop", "index": 0, "logprobs": null, "message": { "content": "杭州有很多好玩的地方,以下是一些推荐的景点:\n\n1. **西湖** - 首批国家5A级旅游景区,中国十大风景名胜之一,以自然与人文景观著称。\n2. **西溪国家湿地公园** - 适合亲近自然,感受湿地的魅力。\n3. **灵隐寺** - 杭州最古老的寺庙之一,具有深厚的文化底蕴。\n4. **六和塔** - 杭州的标志性建筑之一,可以登塔俯瞰江景。\n5. **宋城** - 可以体验宋朝的历史文化。\n6. **雷峰塔** - “雷峰夕照”是杭州一大美景,可以欣赏夕阳下的西湖。\n7. **湘湖** - 湖光山色、古桥流水,适合休闲活动。\n8. **钱塘江大桥** - 不仅实用,还是观赏钱塘江壮丽景色的好地方。\n9. **京杭大运河** - 体验古代水运文化的绝佳地点。\n10. **太子湾公园** - 自然与人文景观结合的美丽公园。\n\n此外,还有其他一些免费景点也非常值得一去,比如杭州植物园、法喜寺、胡雪岩故居等。", "refusal": null, "role": "assistant", "audio": null, "function_call": null, "tool_calls": null } } ], "created": 1739450868, "model": "qwen-turbo", "object": "chat.completion", "service_tier": null, "system_fingerprint": null, "usage": { "completion_tokens": 0, "prompt_tokens": 0, "total_tokens": 0, "completion_tokens_details": null, "prompt_tokens_details": null } }
SSE格式,示例结果如下:
{ "id": "7eb65e8cbc62428ca7ae22782addc****", "choices": [ { "delta": { "content": "坊", "function_call": null, "refusal": null, "role": "assistant", "tool_calls": null }, "finish_reason": null, "index": 240, "logprobs": null } ], "created": 1739451105, "model": "DeepSeek-R1-Distill-Qwen-32B", "object": "chat.completion.chunk", "service_tier": null, "system_fingerprint": null, "usage": null }
Python SDK调用
在本地终端中执行Python代码调用服务,代码示例如下:
from openai import OpenAI
##### API 配置 #####
openai_api_key = "EAS_TOKEN"
openai_api_base = "EAS_URL/v1"
client = OpenAI(
api_key=openai_api_key,
base_url=openai_api_base,
)
#### Chat ####
def chat():
stream = True
chat_completion = client.chat.completions.create(
model="default",
stream=stream,
messages=[
{"role": "user","content": "你好"},
{"role": "assistant","content": "你好,有什么能帮到您?"},
{"role": "user", "content": "浙江省会是哪里"},
{"role": "assistant", "content": "杭州是浙江的省会。"},
{"role": "user","content": "有哪些好玩的"}
],
extra_body={
"search_web": True,
}
)
if stream:
for chunk in chat_completion:
print(chunk.choices[0].delta.content, end="")
else:
result = chat_completion.choices[0].message.content
print(result)
chat()
其中关键配置说明如下:
参数 | 描述 |
参数 | 描述 | |
openai_api_key | 将EAS_TOKEN替换为RAG服务的Token。 | |
openai_api_base | 将EAS_URL替换为RAG服务的访问地址。 | |
extra_body | search_web | 模型在生成文本时是否会参考互联网搜索结果。取值如下:
|
- 本页导读 (1)
- 前提条件
- 步骤一:开通网络搜索服务
- 阿里云通用搜索服务
- Bing搜索
- 步骤二:配置RAG对话系统
- 配置LLM大语言模型
- 配置网络搜索
- 步骤三:WebUI页面调试
- 步骤四:API调用
- 1.获取调用信息
- 2.调用服务