Amazon Kendra
基于机器学习的企业搜索服务,能够对内部文档的自然语言提问返回精准答案
概述
Amazon Kendra 是一项基于机器学习的智能企业搜索服务。它从 S3、RDS、SharePoint、Confluence、Salesforce 等多种数据源获取文档,针对自然语言提问精准定位并提取文档中的相关段落作为回答。其最大特点是能够返回传统关键词搜索无法找到的语义相关信息,大幅提升内部知识库和帮助台的搜索精度。
索引与数据源连接器
Kendra 的索引是存储待搜索文档的逻辑容器。创建索引时选择版本 (Developer 或 Enterprise),根据文档数量和查询频率确保相应容量。Developer 版本限制为最多 10,000 个文档和每天 4,000 次查询,适合验证用途。数据源连接器提供 S3、RDS、SharePoint Online、Confluence、ServiceNow、Google Drive 等 40 多种,各连接器自动处理数据源特有的认证、增量同步和元数据提取。同步计划可设置为按需或定期执行 (最短 1 小时间隔),增量同步仅重新索引已变更的文档。通过 BatchPutDocument API 作为自定义数据源,还可导入自有系统的数据。文档可附加自定义属性 (部门名称、项目名称、机密级别等),用于分面搜索和过滤。
查询处理与排名调优
Kendra 的查询处理以自然语言理解 (NLU) 模型驱动的语义搜索为基础。它分析用户问题的意图,不仅返回关键词精确匹配的结果,还包含语义相关的文档。搜索结果分为三类:建议答案 (Suggested Answer) 从文档中提取相关段落作为直接回答,文档 (Document) 返回高相关度的完整文档,FAQ 从预注册的问答对中进行匹配。要提高排名精度,可通过相关性调优 (Relevance Tuning) 调整各字段的权重。例如提高标题字段的重要性、对更新日期较新的文档进行加权等设置非常有效。此外,通过 SubmitFeedback API 提交用户点击反馈,机器学习模型可持续改善排名。查询响应时间通常在 1 秒以内,即使面对大规模文档集也能保持实用速度。
访问控制与用户上下文
Kendra 原生支持文档级别的访问控制列表 (ACL)。数据源连接器自动导入源系统的权限信息,在搜索时根据用户所属组仅返回其有权查看的文档。SharePoint 和 Confluence 连接器会将源系统的 ACL 直接映射到 Kendra,无需重复管理权限设置。对于自定义数据源,可通过 Principal 对象显式设置用户或组级别的允许/拒绝权限。用户上下文通过查询时的 UserContext 参数传递用户 ID 和组信息。与 IAM Identity Center 集成后,可从 SSO 令牌自动获取用户信息。运维注意事项:ACL 同步依赖于数据源的同步时间,权限变更可能不会立即生效。对于高机密环境,建议缩短同步间隔,并在权限变更后手动执行同步。