通过 Amazon Kendra 构建企业搜索 - 自然语言查询与 FAQ 自动提取
构建可用自然语言搜索内部文档的企业搜索平台。介绍数据源连接器配置、搜索精度调优和 RAG 集成。
Kendra 概述
Kendra 是利用 ML 的企业搜索服务。与传统关键词搜索不同,用自然语言提问时可从内部规程文档中提取相关段落直接回答。搜索结果高亮显示文档相关段落,通过 40 多个数据源连接器连接内部系统,支持 14 种语言的自然语言查询。也可作为 RAG 的检索器使用。内部采用基于 BERT 的 Transformer 模型进行查询与文档的语义匹配,即使存在表述差异或同义词,也无需依赖精确关键词匹配即可响应搜索。
数据源与精度调优
通过数据源连接器连接 S3、SharePoint、Confluence、ServiceNow 等内部系统,定期爬取并自动更新索引。支持 ACL 的连接器根据用户浏览权限过滤搜索结果。搜索精度调优方面,注册自定义同义词词典、重要度提升(特定字段权重调整)和利用用户反馈都很有效。同义词词典支持单向映射(如「年假」→「带薪休假」)和双向同义词,有助于覆盖行业术语和内部缩写。字段提升可为标题或 FAQ 问题文本分配 10 倍评分,将精确匹配优先于噪声较多的正文搜索结果。
RAG 与生成 AI 集成
Kendra 作为 RAG (Retrieval-Augmented Generation) 的检索器,为生成 AI 应用提供高精度搜索结果。结合 Amazon Bedrock 的基础模型和 Kendra,可构建基于内部文档生成准确回答的聊天机器人。通过 Kendra 的 Retrieve API 获取相关文档摘录,作为上下文传递给 LLM 生成回答。基于 ACL 的访问控制确保仅返回符合用户权限的搜索结果,防止机密信息泄露。自定义文档增强可在索引前通过 Lambda 添加元数据或预处理文本。
与 Amazon Q Business 的比较与选择
2024 年正式发布的 Amazon Q Business 是包含 Kendra 索引技术、同时集成生成 AI 回答生成和插件连接的全托管服务。Q Business 提供一站式聊天界面体验,无需从零设计搜索 UI 即可回答内部信息查询。而 Kendra 的优势在于灵活性,可直接调用 Retrieve API 和 Query API,将搜索结果排序逻辑和展示层嵌入自定义应用。当需要将搜索引擎嵌入现有自定义 UI 或门户,或需要自行选择 LLM 构建 RAG 管道时,Kendra 更为合适。如果需要集成「预约会议」「创建工单」等操作,Q Business 的插件机制更具优势。两个服务并非互斥——可以将 Kendra 索引配置为 Q Business 的数据源。
设计最佳实践与常见陷阱
索引设计中,将文档分割为适当大小的块对搜索精度影响重大。Kendra 每文档最多处理 5 MB 文本,但直接导入长篇 PDF 会导致回答焦点模糊。建议按逻辑段落预先分割,并为每个块附加元数据(部门、文档类型、发布日期),启用分面搜索和过滤以提高精度。常见陷阱是同步计划配置错误。将连接器同步设为每小时会对未变更的文档触发重新索引,消耗查询容量单位 (QCU) 并导致成本膨胀。对支持变更检测的连接器使用增量同步;对 S3 连接器,通过 EventBridge 的对象创建事件触发实时同步更具成本效益。FAQ 数据源支持 CSV 或 JSON 格式的问答对注册,将常见问题的回答置顶显示,直接减轻客服负担。
Kendra 费用与优化
Kendra 的费用由索引版本(Developer 或 Enterprise)、连接器同步频率和文档数决定。Developer 版月费约 810 美元,最多 10,000 文档和每天 4,000 次查询。Enterprise 版月费约 1,008 美元,最多 100,000 文档和每天 8,000 次查询。通过调整连接器同步频率和优化索引文档范围控制成本。利用 FAQ 数据源直接返回常见问题回答,提升搜索精度和用户体验。Developer 版不具备高可用架构,生产工作负载应选择 Enterprise 版,仅在 PoC 阶段使用 Developer 版验证。
总结
Kendra 是基于 ML 的企业搜索服务,提供自然语言查询的问答和作为 RAG 检索器的活用。通过 40 多个数据源连接器连接内部系统,基于 ACL 的访问控制返回符合用户权限的搜索结果。通过自定义文档增强和 FAQ 数据源提高搜索精度。理解与 Q Business 的职责划分,在需要搜索 UI 定制性或构建独立 RAG 管道时选择 Kendra。