Elastic Playground:使用 Elastic 连接器与你的数据聊天

2025年2月6日   |   by mebius

作者:来自 ElasticJeffrey RengifoToms Mura

%title插图%num

了解如何使用 Elastic 连接器通过 Playground 创建统一的知识库。

Elastic 连接器可以轻松索引和组合来自不同来源的数据以运行统一搜索。通过添加 Playground,你可以设置一个可以与之聊天和提问的知识库。

连接器(Connectors)是一种 Elastic 集成,有助于将来自不同来源的数据同步到 Elasticsearch 索引。

在本文中,我们将了解如何使用 Elastic 连接器索引 Confluence Wiki,配置索引以运行语义查询,然后使用 Playground 与数据聊天。

步骤

  • 配置连接器
  • 准备索引
  • 使用 Playground 与数据聊天

配置连接器

在我们的示例中,我们的 Wiki 作为医院的集中存储库,包含以下信息:

  • 医生资料:专业、可用性、联系信息。
  • 患者档案:医疗记录和其他相关数据。
  • 医院指南:政策、应急方案和员工指导。

%title插图%num

我们将使用 Elasticsearch 管理的 Confluence 连接器索引 Wiki 中的内容。

第一步是获取您的 Atlassian API 密钥

%title插图%num

配置 Confluence 原生连接器

你可以按照此处的步骤指导你完成配置:

%title插图%num

  1. 访问你的 Kibana 实例并转到 Search > Connectors
  2. 单击 “添加连接器”并从列表中选择 “Confluence”。
  3. 将新连接器命名为 “hospital”。
  4. 然后单击 “创建新索引” 按钮。
  5. 单击“edit configurations”,对于此示例,我们需要修改 “confluence cloud” 的数据源。必填字段为:
    1. Confluence Cloud 帐户电子邮件
    2. API 密钥
    3. Confluence URL 标签
  6. 保存配置并转到下一步。

默认情况下,连接器将索引:

  • Pages
  • Spaces
  • Blog Posts
  • Attachments

为确保仅索引 wiki,你需要使用高级过滤规则,仅包含名为 “Hospital Health” 的空间内标识为 “HH” 的页面。

[
  {
    "query": "type = 'page' AND space.key = 'HH'"
  }
]

你可以在此处查看更多示例。

%title插图%num

现在,让我们运行 “Full Content Sync” 来索引我们的 wiki。

%title插图%num

完成后,我们可以在 “Documents” 选项卡上检查索引文档。

%title插图%num

准备索引

凭借目前所拥有的,我们可以对内容运行全文查询(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:

%title插图%num

让我们使用 UI 添加 semantic_text 字段。转到 connector 页面,选择索引映射,然后单击 Add Field

选择 “Semantic text” 作为字段类型。对于此示例,引用字段将为 “body”,字段名称为 content_semantic。最后,选择我们刚刚配置的推理端点。

在单击 “Add field” 之前,请检查你的配置是否与以下内容类似:

%title插图%num

现在点击 “Save mapping”:

%title插图%num

从 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 密钥

%title插图%num

让我们通过单击 “Connect to an LLM > OpenAI” 来创建 OpenAI 连接器,然后填写字段,如下图所示:

%title插图%num

要选择我们使用 Confluence connector 创建的索引,请单击 “Add data sources”,然后单击该索引。

注意:如果需要,你可以选择多个索引。

%title插图%num

现在我们已经完成配置,我们可以开始向模型提出问题。

%title插图%num

%title插图%num

除了选择在答案中包含源文档的引用之外,你还可以控制将哪些字段发送到 LLM 以用于搜索。

%title插图%num

View Code 窗口提供了将其集成到应用程序所需的 Python 代码。

%title插图%num

结论

在本文中,我们了解到,我们可以使用连接器来搜索不同来源的信息以及使用 Playground 的知识库。我们还学会了轻松部署 RAG 应用程序来与您的数据进行聊天,而无需离开 Elastic 环境。

想要获得 Elastic 认证?了解下一次 Elasticsearch 工程师培训何时开始!

Elasticsearch 包含许多新功能,可帮助你为你的用例构建最佳搜索解决方案。深入了解我们的示例笔记本以了解更多信息,开始免费云试用,或立即在你的本地机器上试用 Elastic。

原文:Elastic Playground: Using Elastic connectors to chat with your data – Elasticsearch Labs

文章来源于互联网:Elastic Playground:使用 Elastic 连接器与你的数据聊天

Tags: , , , ,