你懂的,语境--第三部分:混合搜索在语境工程中的威力
了解如何利用上下文工程和混合搜索,通过聚合、RBAC 和非内容信号来提高人工智能输出的准确性。
Elasticsearch is packed with new features to help you build the best search solutions for your use case. Learn how to put them into action in our hands-on webinar on building a modern Search AI experience. You can also start a free cloud trial or try Elastic on your local machine now.
我们已经讨论了混合搜索(第一部分)和上下文工程(第二部分);现在,让我们深入探讨它们如何协同工作,为 RAG 和代理人工智能操作提供有针对性的上下文,以达到最佳效果。
搜索并未消亡,只是转移了位置
因此,我们已经从主要通过文本框搜索上下文,然后使用返回的信息(上下文)自己构建答案,转变为现在使用自然语言告诉代理我们想要什么,然后让它自动研究并为我们编译答案。科技界的许多人都指出了这一转变,并宣称 "搜索已死"(搜索引擎优化和广告词的世界 肯定 在 变化 : GEO 谁知道?
以前,人类是主观相关性的主要仲裁者:每个用户都有自己进行搜索的理由,他们的个人经验会影响搜索结果的相对准确性。如果我们要相信代理能得出与我们相同(或更好)的结论,我们就必须确保代理能获得的上下文信息尽可能接近我们的主观意图。为了实现这一目标,我们必须设计为法律硕士提供的环境!
利用混合搜索检索生成上下文
在此提醒大家,Elastic 的混合搜索结合了传统基于关键字搜索的优势(语法灵活性、关键字精确度和相关性评分)和向量相似性搜索的语义理解,并提供了多种重排技术。这种协同作用(这个词从未有过如此真实的用法)这样就能获得高度相关的结果,查询内容的针对性也会更加细致。这不仅仅是说你可以将主观相关性作为检索阶段之一,而是说第一阶段检索可以同时包括相关性评分和所有其他模式。
卓越的精度& 效率
使用可提供分布式搜索、检索和重新排序的数据平台作为主要的上下文检索引擎非常有意义。您可以使用高级查询语法来添加主观意图的缺失部分,并过滤掉可能干扰或混淆所返回的上下文信息价值的内容。您可以从任何可用的单独语法选项中进行选择,也可以将各种模式组合成一个单一的搜索,以其最能理解的方式针对每种类型的数据进行搜索,然后通过重新排序对其进行组合/重新排序。您可以对响应进行过滤,使其只包含您想要的字段/值,从而避免无关数据。在为代理提供服务时,这种目标定位的灵活性可让您构建的工具在检索上下文时极为准确。
语境细化(聚合和非内容信号)
聚合在塑造工具向上下文窗口提供的内容方面特别有用。聚合自然会提供有关返回的上下文数据形状的基于数字的事实,这使得 LLM 的推理更容易、更准确。由于聚合可以分层嵌套,因此很容易为 LLM 增加多层次的细节,从而产生更细致入微的理解。聚合还有助于管理上下文窗口的大小--您可以轻松地将 10 万个文档的查询结果减少到几百个聚合洞察的标记。
非内容信号是数据中的固有指标,它们能告诉你所查看内容的全貌;它们是结果的附加特征,如受欢迎程度、新鲜度、地理位置、类别、主机多样性或价格带。这些信息可以为代理如何权衡所接收到的上下文的重要性提供有用信息。一些简单的例子也许最能说明这一点:
提升近期发布的热门内容--想象一下,您有一个文章知识库。您希望找到与用户查询相关的文章,但同时也希望推广那些最近发表的、对其他用户有帮助的文章(例如,具有较高"likes" 数量的文章)。在这种情况下,我们可以使用混合搜索来查找相关文章,然后根据文章的发表日期和受欢迎程度对其进行排序。
带有销售和库存调整功能的电子商务搜索- 在电子商务环境中,您希望向客户展示与其搜索词相匹配的产品,但同时也希望推广销售良好且有库存的产品。您可能还想把库存少的产品降级,以避免客户失望。
在错误跟踪器中确定高严重性问题的优先级--对于软件开发团队来说,在搜索问题时,首先浮现高严重性、高优先级和最近更新的问题至关重要。您可以使用 "关键性 "和 "讨论最多 "等非信号来独立权衡不同的因素,确保最关键和讨论最活跃的问题排在最前面
这些示例查询和更多内容可在随附的 Elasticsearch Labs内容页面中找到。
安全执法
利用 Elastic 等搜索驱动的速度层进行上下文工程的一个重要优势是其内置的安全框架。Elastic 的平台通过细粒度的基于角色的访问控制(RBAC)和基于属性的访问控制(ABAC),确保向代理和生成式人工智能操作提供的上下文尊重并保护敏感的私人信息。这意味着不仅能高效处理查询,还能根据代理或发起请求的用户的特定权限对结果进行过滤。
代理以认证用户的身份运行,因此通过平台内置的安全功能隐式地应用了安全功能:
细粒度权限:在文档、字段甚至术语级别定义访问权限,确保人工智能代理只接收他们有权查看的数据。
基于角色的访问控制(RBAC):为代理或用户分配角色,根据其定义的职责授予对特定数据集或功能的访问权限。
基于属性的访问控制(ABAC):根据数据、用户或环境的属性实施动态访问策略,从而实现高度适应性和上下文感知的安全性。
文档级安全(DLS)和字段级安全(FLS):这些功能可确保即使在检索的文档中,也只能看到授权部分,从而防止敏感信息外泄。
与企业安全集成:与现有身份管理系统(如 LDAP、SAML、OIDC)无缝集成,在整个组织内执行一致的安全策略。
通过将这些安全措施直接集成到上下文检索机制中,Elastic 成为了一个安全的看门人,确保人工智能代理在定义的数据边界内运行,防止未经授权的数据暴露,并维护数据隐私法规的合规性。这对于在处理机密或专有信息的人工智能代理系统中建立信任至关重要。
此外,通过在企业数据源上使用统一的数据速度层,还可以减轻代理工具在这些资源库上产生的意外临时查询负载。您只需在一个地方就能近乎实时地搜索所有内容,并在一个地方应用安全和治理控制。
基于搜索的混合工具
Elastic 平台的一些核心功能(更多功能将陆续推出)能极大地促进情境工程的发展。这里最主要的是,该平台提供了多种实现方法,随着人工智能生态系统的发展,可以灵活地调整、改变和扩展方法。
代理生成器介绍
ElasticAgent Builder是我们在代理式人工智能工具领域的首次尝试,该工具可与您已存储在 Elastic 中的数据聊天。Agent Builder 提供了一个聊天界面,使用户能够在 Kibana 中创建和管理自己的代理和工具。它内置 MCP 和 A2A 服务器、编程 API 和一套预置系统工具,用于查询和探索 Elasticsearch 索引,以及从自然语言生成 ES|QL 查询。代理生成器允许您创建自定义工具,通过富有表现力的ES|QL查询语法,瞄准并雕琢返回给代理的上下文数据。
你会问,ES|QL 如何执行混合搜索?核心功能是通过结合 semantic_text 字段 类型和 FORK/FUSE 命令来实现的(FUSE 默认使用 RRF 来合并每个分叉的结果)。下面是一个虚构产品搜索的简单示例:
FROM products
| FORK
(MATCH description "high performance gaming laptop" | EVAL search_type = "bm25"),
(MATCH description_semantic "high performance gaming laptop" | EVAL search_type = "semantic")
| FUSE
| LIMIT 20
| KEEP product_name, description, _score, search_type在上面的示例中,每个 FORK 分支都包含了 EVAL 子句,但 EVAL 子句并不是绝对必要的;包含 EVAL 子句只是为了演示如何跟踪给定结果是从哪种搜索模式返回的。
搜索模板
假设您想将自己的外部代理工具指向 Elastic 部署。您希望使用多级检索器或重新使用已开发的现有 DSL 语法,而不是 ES|QL,还希望能够控制查询接受的输入、执行搜索时使用的语法以及输出中返回的字段。搜索模板允许用户为常用搜索模式定义预定义结构,从而提高检索数据的效率和一致性。这对与搜索应用程序接口交互的代理工具尤其有利,因为它们有助于规范模板代码,加快搜索逻辑的迭代速度。如果您需要调整其中任何一个因素,只需更新搜索模板,就可以实现更改。如果您正在寻找搜索模板与代理工具配合使用的示例,可以看看 Elasticsearch 实验室的博客 "MCP for intelligentsearch",它在来自外部 MCP 服务器的工具调用背后使用了搜索模板。
集成工作流程(FTW!)
在我们新的代理人工智能世界中,最难驾驭的事情之一就是半自主、自导自演的 "推理 "代理的非确定性。情境工程是代理人工智能的一门关键学科:这些技术有助于将我们的代理可能得出的结论缩小到我们所知道的基本事实。即使有了高度准确和相关的上下文窗口(当我们跳出数字事实的范畴时),我们仍然缺少一点保证,即代理的反应是完全可重复和可靠的。
当您多次向代理运行同一个请求时,得到的答案可能基本相同,只是在响应上有那么一点点差别。对于简单的查询来说,这通常没什么问题,也许几乎不会引起注意,我们可以尝试使用上下文工程技术来塑造输出。但是,随着我们要求代理完成的任务变得越来越复杂,一个或多个子任务就更有可能带来差异,从而稍微改变最终结果。随着我们开始更多地依赖代理与代理之间的通信,这种情况可能会变得更糟,而这些差异也会累积起来。这再次说明,与我们的代理互动的工具需要非常灵活,并可进行调整,以精确瞄准上下文数据,而且它们应该以预期的输出格式做出响应。这也表明,在许多使用案例中,我们需要指导代理和工具之间的交互--这就是工作流的作用所在!
Elastic 将很快在平台核心中内置完全可定制的工作流程。这些工作流程将能以双向方式与代理和工具一起运行,因此工作流程将能呼叫代理和工具,代理和工具也能呼叫工作流程。将这些功能完全集成到同一搜索人工智能平台中,您的所有数据都将在该平台中存活,这将是一场变革,工作流程的潜力令人无比振奋!很快,很快就会到来!
作为统一记忆库的弹性
Elastic 是一个分布式数据平台,专为近乎实时的搜索而设计,因此能自然而然地为代理型人工智能系统提供长期记忆功能。通过内置的 Agent Builder 聊天体验,我们还可以跟踪和管理短期记忆和聊天记录。由于整个平台以 API 为先,因此利用 Elastic 作为平台来持久化工具的上下文输出(并能在稍后参考)非常容易,而这些输出可能会淹没代理的上下文窗口;这种技术在上下文工程领域有时被称为 "记笔记"。
在同一个搜索平台上同时拥有短期和长期记忆会带来很多内在的好处:试想一下,我们可以将聊天记录和持久化的上下文回复作为语义影响因素的一部分,用于未来的聊天互动,或用于执行威胁分析,或用于创建从频繁重复的工具调用中自动生成的持久化数据产品......这种可能性是无穷无尽的!
结论
大型语言模型的出现改变了我们匹配内容的方式,也改变了我们查询数据的方法。在我们的世界里,人类正在迅速地从研究、背景考虑和逻辑推理来回答自己的问题,转变为这些步骤在很大程度上通过代理人工智能实现自动化。为了让我们相信所收到的生成答案,我们需要确保代理在生成答案时考虑了所有 最相关的信息(包括主观相关性因素)。我们使代理人工智能值得信赖的主要方法是,通过 RAG 和上下文工程技术将检索额外上下文的工具落地,但这些工具如何进行初始检索对响应的准确性至关重要。
Elastic Search 人工智能平台提供了混合搜索的灵活性和优势,同时还提供了多项内置功能,有助于代理式人工智能的准确性、性能和可扩展性;换句话说,Elastic 是语境工程多个方面的绝佳平台!通过搜索平台将上下文检索标准化,我们在多个方面简化了代理工具的操作--与 "放慢速度才能更快 "的矛盾论类似,上下文生成层的简化意味着代理人工智能更快、更可信。




