📢 转载信息
原文作者:Arpit Gupta, Ashish Bhagam, and Ross Gabay
智能生成式 AI 助手代表了人工智能领域的重大进展。与基础聊天机器人不同,这些系统由大型语言模型(LLM)驱动,具备广泛的智能,能够进行开放式对话,并在执行后端任务时根据用户需求动态调整。
这些系统通过检索增强生成(RAG)技术,利用 API 调用和数据库查询实时获取特定业务数据,从而提供准确且时效性强的信息。本文将展示如何利用 Amazon Bedrock、Amazon Bedrock AgentCore、Strands Agents 和 Amazon OpenSearch 构建一个集成了语义搜索与文本搜索功能的生成式 AI 智能体。
混合检索的需求:当语义搜索不再足够时
在现实场景中,用户往往需要同时满足语义理解(如“豪华酒店”、“海景”)和精确条件过滤(如“迈阿密”、“特定日期”)的需求。仅依赖语义搜索可能导致地点匹配出现偏差,而仅依赖文本搜索则无法理解复杂的描述。混合搜索应运而生:
- 语义搜索:用于理解自然语言描述,查找含义相似的内容。
- 文本搜索:用于对位置、日期、标识符等结构化属性进行精确匹配。
智能体架构概述
该架构利用 Amazon Bedrock AgentCore 进行智能编排。智能体的工作循环包括:
- 分析:使用 Bedrock 的基础模型分析用户查询。
- 决策:根据需求决定调用哪些工具。
- 执行:调用混合搜索工具并提取参数。
- 响应:合成信息并回复用户。
通过集成 Amazon OpenSearch Serverless,我们可以将向量嵌入(语义)与结构化文本字段(过滤)结合在单一索引中,从而实现高性能的混合查询。
Strands 框架实现示例
我们使用 Strands 这一开源 AI 智能体框架来定义搜索工具:
from strands import tool
@tool
def hybrid_search(query_text: str, country: str = None, city: str = None):
""" 执行结合语义理解与位置过滤的混合搜索 """
vector = generate_embeddings(query_text)
# 构建混合查询
query = {
"bool": {
"must": [{"knn": {"embedding_field": {"vector": vector, "k": 10}}}],
"filter": []
}
}
if country: query["bool"]["filter"].append({"term": {"country": country}})
# 执行 OpenSearch 查询...
结论
Amazon Bedrock、AgentCore 与 OpenSearch 的结合,为开发者构建复杂的 AI 助手提供了可扩展且安全的架构。这种混合检索方法不仅弥补了传统 RAG 的不足,还通过智能体编排提升了搜索的动态响应能力,使其在房地产、医疗、电商等需要兼顾语义理解与精确过滤的场景中表现卓越。
🚀 想要体验更好更全面的AI调用?
欢迎使用青云聚合API,约为官网价格的十分之一,支持300+全球最新模型,以及全球各种生图生视频模型,无需翻墙高速稳定,文档丰富,小白也可以简单操作。
评论区