使用 Elasticsearch 和 GitHub Copilot SDK 构建一个 RAG agent

作者:来自 Elastic Greg Crist

用五行 C# 代码将 Elasticsearch 接入 GitHub Copilot SDK 作为 RAG 工具,让你的 agent 基于自己的日志、文档和数据进行检索,而不是依赖模型的训练数据。

Agent Builder 现已正式可用。你可以开始使用 Elastic Cloud 试用版,并查看这里的 Agent Builder 文档。


通过大约五行 C# 代码将 Elasticsearch 接入 GitHub Copilot SDK,让你的 agent 直接从真实数据中检索信息,而不是依赖模型去猜测。Copilot 负责规划与编排;Elasticsearch 负责在你的日志、文档和数据之上进行检索。最终效果是:不再产生来自过时训练数据的幻觉,而是基于系统中真实存在的内容给出答案。本文将使用 Elastic.Extensions.AI 桥接库介绍完整的搭建流程。

为什么没有检索层的 RAG agents 会产生幻觉

如果没有检索层,AI agents 只能基于训练数据生成回答,因此当被问及你的日志、文档或专有系统时就容易产生幻觉。GitHub Copilot SDK 提供了一个经过生产验证的编排引擎,Elasticsearch 提供了对你自己的日志、文档和业务数据的高效检索能力。当你把两者连接起来后,agent 就不再 "猜答案"。

在本文中,我们将通过 Elastic.Extensions.AI 桥接库来完成这种连接,并提供完整的 .NET 代码示例,让你能够构建一个真正可运行的 检索增强生成(Retrieval Augmented Generation - RAG) agent,由 Copilot 负责规划,由 Elasticsearch 负责检索。

核心技术栈概览:GitHub Copilot SDK 与 Elastic AI 生态系统

GitHub Copilot SDK 负责编排与规划;Elasticsearch 负责检索与上下文。以下是各组件的作用。

GitHub Copilot SDK

GitHub Copilot SDK 是一个多平台工具集,目前处于技术预览阶段。它支持 Python、TypeScript、Go、.NET 和 Java。在架构上,该 SDK 通过 JSON Remote Procedure Call(JSON-RPC)与 Copilot 命令行接口(CLI)服务器通信,并自动管理进程生命周期。它负责 agent 行为中的核心复杂部分:规划复杂任务、调用工具以及管理模型交互。

Elastic AI 生态系统

在技术栈的另一侧,Elastic 提供两个主要 AI 组件:

  • Elastic AI Assistant:一个专门用于可观测性(Observability)和安全(Security)的工具,帮助构建查询、排障以及威胁分析。
  • Elastic Agent Builder :一个用于创建基于 Elasticsearch 数据的自定义 agents 的框架。它提供可视化聊天界面,并支持由 Elasticsearch Query Language(ES|QL)驱动的 skills 和 tools。

功能分工:在该集成中,GitHub Copilot 是编排器(负责规划与决策的"大脑"),而 Elasticsearch 是上下文提供者(作为"记忆"和"知识库",存储你的日志、文档和专有数据)。
图 1:GitHub Copilot SDK 与 Elastic 组件如何交互。

Elasticsearch 与 Copilot 集成的架构模式

将 Elasticsearch 与 GitHub Copilot SDK 连接主要有三种方式:

用例 关键协议/库 开发者收益
RAG / 混合检索 Microsoft.Extensions.AI / Elastic.Extensions.AI 用"5 行代码"级别的复杂度,让 agent 基于私有文档、日志和工单进行回答
集群管理运维 Elasticsearch 管理 API / SDK 工具 通过自然语言控制集群健康状态与重建索引(注意:索引生命周期管理 ILM 复杂度较高)
Agent 互操作性 Model Context Protocol(MCP) / Agent2Agent(A2A)协议 直接调用预构建 Elastic agents,无需编写新的工具函数

分步指南:构建一个由 Elasticsearch 驱动的 Copilot agent

步骤 1:环境准备

  • GitHub Copilot 订阅:必需,除非使用 Bring Your Own Key(BYOK)。
  • Copilot CLI:已安装并加入 PATH。
  • Elasticsearch 集群:一个可用实例(Elasticsearch Serverless 或 Elastic Cloud)。

步骤 2:安装 SDK

该 SDK 支持 Python、TypeScript、Go、.NET 和 Java(开发中)。本文示例使用 .NET,在该环境中 Elastic.Extensions.AI 桥接库提供了最紧密的集成。安装 .NET 包如下:

复制代码
dotnet add package GitHub.Copilot.SDK
dotnet add package Elastic.Clients.Elasticsearch
dotnet add package Elastic.Extensions.AI

步骤 3:将 Elasticsearch 注册为原生工具

该集成通过 Elastic.Extensions.AI 桥接库运行,这是由 Martijn Laarman(Elastic 前 .NET 客户端维护者)开发的库,用于将 Elastic Agent Builder 与 GitHub Copilot SDK 连接起来。核心模式包含四个步骤,用大约 20 行 C# 代码实现,而在逻辑上可以归纳为 5 个操作:

复制代码
// 1. Initialize the Elasticsearch client
var client = new ElasticsearchClient(
    new Uri(Environment.GetEnvironmentVariable("ES_URL")!),
    new ApiKey(Environment.GetEnvironmentVariable("ES_API_KEY")!));


// 2. Decorate a search method as a Copilot tool
[Description("Search Elasticsearch for documents relevant to the query")]
async Task<string> SearchAsync(
    [Description("Natural-language search query")] string query)
{
    // 3. Define the schema: ask the LLM to drive query DSL via SearchAsync
    var response = await client.SearchAsync<JsonElement>(s => s
        .Index("your-index")
        .Query(q => q.Match(m => m.Field("content").Query(query))));
    return JsonSerializer.Serialize(response.Documents.Take(5));
}


// 4. Register the tool and run via the Elastic.Extensions.AI bridge
var agent = CopilotAgent.Create(new CopilotAgentOptions());
agent.AddTool(AIFunctionFactory.Create(SearchAsync));
await agent.StartAsync();

步骤 4:实现安全防护与隐私控制

Copilot SDK 内置了安全模型,用户必须确认工具调用(除非使用 --allow-all-tools 标志)。

关于数据隐私:Elastic 不会使用客户数据(提示词、查询或事件数据)用于模型训练。对于希望实现零配置 AI 的团队,可以通过 Elastic Inference Service(EIS)使用 Elastic 托管的大语言模型(LLMs),以便立即访问生成式能力,但这些会根据 Elastic Cloud 定价产生额外费用。如果使用 EIS,数据将由你选择的第三方 LL 提供商进行处理。

开始使用:用 GitHub Copilot SDK 构建 Elasticsearch RAG agent

通过使用你自己的数据进行 grounding,可以解决幻觉问题。将 Elasticsearch 通过 Elastic.Extensions.AI 桥接库连接到 GitHub Copilot SDK 后,你的 agent 就可以以最少的样板代码访问你的数据。Copilot 负责规划与编排;Elasticsearch 负责快速、准确的检索。最终结果是:agent 基于系统中真实存在的数据进行推理,而不是基于数月前训练得到的模型知识。

下一步:搭建你的 Elasticsearch RAG agent

技术说明:GitHub Copilot SDK 目前仍处于技术预览阶段,在正式发布前可能会有破坏性变更。

补充资源:你可以阅读关于 Elasticsearch 与 Microsoft Agent Framework 结合使用的相关博客

常见问题解答

AI agent 的 grounding(基于真实数据)是什么意思?

grounding 指的是 agent 在生成回答之前,会先从 Elasticsearch 等数据源检索真实数据,而不是仅依赖 LLM 的训练数据。这可以防止幻觉,并确保答案反映你真实环境中的日志、文档和专有记录。

Elastic 会使用我的查询或数据来训练 AI 模型吗?

不会。Elastic 不会使用客户数据(包括提示词、查询或事件数据)来训练模型。如果你使用 BYOK(Bring Your Own Key),你的数据会保留在你自己的环境中。如果使用第三方 LLM 提供商,则适用其各自的数据政策。

MCP 互操作性如何与 Elastic Agent Builder 协作?

Elastic Agent Builder 的 agents 会暴露一个 MCP 服务器端点,GitHub Copilot SDK 可以直接连接该端点。这样,已有的 Elastic agents 可以无需重写工具函数,就能被 Copilot 原生调用。

可以用 GitHub Copilot 来管理 Elasticsearch 集群操作吗?

基础操作(例如检查集群健康状态或触发 reindex)适合作为 Copilot 工具使用。但复杂操作(例如 ILM 策略管理)较难安全地通过自然语言自动化,在 agentic 工作流中应谨慎处理。

GitHub Copilot SDK 支持哪些语言来集成 Elasticsearch?

截至目前,该 SDK 支持 Python、TypeScript、Go 和 .NET,Java 仍在开发中。在 Elasticsearch 集成方面,Python 和 .NET 提供最直接的路径。由于这两种语言都与 Microsoft Agent Framework 深度集成,开发者可以通过现有桥接(如 Elastic.Extensions.AI)无缝连接 Copilot 与 Elasticsearch。

这篇内容对你有多大帮助?

原文:Elasticsearch RAG agent with GitHub Copilot SDK in 5 lines - Elasticsearch Labs

相关推荐
温九味闻醉1 小时前
基础知识补充
人工智能
我爱cope1 小时前
【Agent智能体17 | 工具使用-MCP协议】
人工智能·语言模型·职场和发展
星辰_mya1 小时前
Elasticsearch 数据处理常见问题
大数据·elasticsearch·搜索引擎
ZHW_AI课题组1 小时前
Python调用百度智能云API实现文本纠错
人工智能·机器学习·百度云
宸津-代码粉碎机1 小时前
Spring AI企业级RAG进阶|文档智能分片调优、ES深度整合、接口限流熔断监控生产实战
java·开发语言·人工智能·后端·spring·elasticsearch·oracle
知识浅谈1 小时前
人工智能日报 每日AI新闻(2026年6月2日):OpenAI上AWS、Anthropic递表与AI终端竞赛升温
大数据·人工智能·aws
Ai财富密码1 小时前
【Codex入门教程2】用Codex零基础手搓“双摄 App”并上架 App Store 的通关指南
人工智能·codex·gpt5.5·双摄app
qqxhb2 小时前
36|RAG 评测与回归:命中率、覆盖率、引用正确性
人工智能·数据挖掘·回归·覆盖率·命中率·正确性