Elastic Playground:使用 Elastic 连接器与你的数据聊天
2025年2月6日 | by mebius
作者:来自 ElasticJeffrey Rengifo及Toms Mura
了解如何使用 Elastic 连接器通过 Playground 创建统一的知识库。
Elastic 连接器可以轻松索引和组合来自不同来源的数据以运行统一搜索。通过添加 Playground,你可以设置一个可以与之聊天和提问的知识库。
连接器(Connectors)是一种 Elastic 集成,有助于将来自不同来源的数据同步到 Elasticsearch 索引。
在本文中,我们将了解如何使用 Elastic 连接器索引 Confluence Wiki,配置索引以运行语义查询,然后使用 Playground 与数据聊天。
步骤
- 配置连接器
- 准备索引
- 使用 Playground 与数据聊天
配置连接器
在我们的示例中,我们的 Wiki 作为医院的集中存储库,包含以下信息:
- 医生资料:专业、可用性、联系信息。
- 患者档案:医疗记录和其他相关数据。
- 医院指南:政策、应急方案和员工指导。
我们将使用 Elasticsearch 管理的 Confluence 连接器索引 Wiki 中的内容。
第一步是获取您的 Atlassian API 密钥:
配置 Confluence 原生连接器
你可以按照此处的步骤指导你完成配置:
- 访问你的 Kibana 实例并转到 Search > Connectors
- 单击 “添加连接器”并从列表中选择 “Confluence”。
- 将新连接器命名为 “hospital”。
- 然后单击 “创建新索引” 按钮。
- 单击“edit configurations”,对于此示例,我们需要修改 “confluence cloud” 的数据源。必填字段为:
- Confluence Cloud 帐户电子邮件
- API 密钥
- Confluence URL 标签
- 保存配置并转到下一步。
默认情况下,连接器将索引:
- Pages
- Spaces
- Blog Posts
- Attachments
为确保仅索引 wiki,你需要使用高级过滤规则,仅包含名为 “Hospital Health” 的空间内标识为 “HH” 的页面。
[
{
"query": "type = 'page' AND space.key = 'HH'"
}
]
你可以在此处查看更多示例。
现在,让我们运行 “Full Content Sync” 来索引我们的 wiki。
完成后,我们可以在 “Documents” 选项卡上检查索引文档。
准备索引
凭借目前所拥有的,我们可以对内容运行全文查询(full text)。由于我们想要提出问题而不是寻找关键词,因此我们现在需要进行语义搜索。
为此,我们将使用 Elasticsearch ELSER 模型作为嵌入提供程序。
要配置此功能,请使用 Elasticsearch 的推理 API(inference API)。
转到 Kibana Dev Tools 并复制此代码以启动端点:
PUT _inference/sparse_embedding/hospital-inference
{
"service": "elser",
"service_settings": {
"num_allocations": 1,
"num_threads": 1
}
}
现在模型正在后台加载。如果你以前没有使用过 ELSER 模型,可能会收到 502 Bad Gateway 错误。要确保模型正在加载,请检查 Machine Learning > Trained Models:
让我们使用 UI 添加 semantic_text 字段。转到 connector 页面,选择索引映射,然后单击 Add Field。
选择 “Semantic text” 作为字段类型。对于此示例,引用字段将为 “body”,字段名称为 content_semantic。最后,选择我们刚刚配置的推理端点。
在单击 “Add field” 之前,请检查你的配置是否与以下内容类似:
现在点击 “Save mapping”:
从 UI 运行 Full Content Sync 后,让我们通过运行语义查询来检查它是否正常:
GET hospital/_search
{
"size": 1,
"_source": {
"excludes": [
"*embeddings",
"*chunks"
]
},
"query": {
"semantic": {
"field": "content_semantic",
"query": "doctors information"
}
}
}
响应看起来应该是这样的:
"hits": {
"total": {
"value": 4,
"relation": "eq"
},
"max_score": 6.8836327,
"hits": [
{
"_index": "hospital",
"_id": "7602523",
"_score": 6.8836327,
"_ignored": [
"body.enum"
],
tgcode "_source": {
"author": "your-confluence-name",
"content_semantic": {
"inference": {
"inference_id": "hospital-inference",
"model_settings": {
"task_type": "sparse_embedding"
}
}
},
"type": "page",
"title": "Patient Records",
"body": """Patient: Maria Gonzalez
Patient: Carlos Lopez
Patient: Ana Torres
Patient: Roberto Castillo
Patient: Lucia Rivera
""",
"space": "Hospital Health",
tgcode "url": "https://tomasmurua.atlassian.net/wiki/spaces/HH/pages/7602523/Patient+Records",
"labels": [],
"createdDate": "2024-11-19T16:08:47.765Z",
"id": "7602523",
"ancestors": [
{
"title": "Hospital Health"
}
],
"_timestamp": "2024-11-19T16:09:33.434Z",
"_allow_access_control": [
"account_id:712020:88983800-6c97-469a-9451-79c2dd3732b5",
"group_id:5c41d427-6ce5-4936-9e07-dada287179e8",
"group_id:26497e10-fe1b-4510-87e4-356c8f60fe49",
"group_id:bbdc180e-eec3-4723-9647-867efb4491be",
"group_id:55332682-d081-46e4-bd8c-9e3a37d03b14"
]
}
}
]
}
使用 Playground 与数据聊天
什么是 Playground?
Playground 是一个托管在 Kibana 中的低代码平台,可让你轻松创建 RAG 应用程序并向你的索引提问,无论它们是否具有嵌入。
Playground 不仅提供带有引用的 UI 聊天并提供对查询的完全控制tgcode,而且还处理不同的 LLM 来合成答案。
配置 Playground
首先,你只需要任何兼容模型的凭据:
- OpenAI(或任何与 OpenAI API 兼容的本地模型)
- Amazon Bedrock
- Google Gemini
打开 Playground 时,你可以选择配置 LLM 提供程序并选择包含要用作知识库的文档的索引。
对于此示例,我们将使用 OpenAI。你可以查看此链接以了解如何获取 API 密钥。
让我们通过单击 “Connect to an LLM > OpenAI” 来创建 OpenAI 连接器,然后填写字段,如下图所示:
要选择我们使用 Confluence connector 创建的索引,请单击 “Add data sources”,然后单击该索引。
注意:如果需要,你可以选择多个索引。
现在我们已经完成配置,我们可以开始向模型提出问题。
除了选择在答案中包含源文档的引用之外,你还可以控制将哪些字段发送到 LLM 以用于搜索。
View Code 窗口提供了将其集成到应用程序所需的 Python 代码。
结论
在本文中,我们了解到,我们可以使用连接器来搜索不同来源的信息以及使用 Playground 的知识库。我们还学会了轻松部署 RAG 应用程序来与您的数据进行聊天,而无需离开 Elastic 环境。
想要获得 Elastic 认证?了解下一次 Elasticsearch 工程师培训何时开始!
Elasticsearch 包含许多新功能,可帮助你为你的用例构建最佳搜索解决方案。深入了解我们的示例笔记本以了解更多信息,开始免费云试用,或立即在你的本地机器上试用 Elastic。
原文:Elastic Playground: Using Elastic connectors to chat with your data – Elasticsearch Labs