收到问题后,应用程序首先会在 Elasticsearch 索引中搜索相关文档。具体做法是为问题生成一个稀疏的向量嵌入,然后在索引中搜索与之最接近的嵌入,每个嵌入都与文档的一个段落相关联。

与摄取阶段一样,Elasticsearch 索引通过ElasticsearchStore 与 Langchain 的集成进行管理:

Langchain 的 retriever 接口的invoke() 方法很好地抽象了为问题生成嵌入,然后进行搜索的过程,该方法可执行所有这些任务,并返回找到的最相关文档列表:

您可以看到返回的段落是如何作为源文件发送到客户端的。React 应用程序将在答案下方以"搜索结果" 的形式显示这些结果。

需要注意的是,在ElasticsearchStore 类中使用的strategy 参数必须与摄取过程中使用的策略相匹配。在本例中,SparseVectorRetrievalStrategy 从 Elastic 的 ELSER 模型中创建并搜索稀疏向量。您可以评估的另一个有趣选项是使用ApproxRetrievalStrategy ,它使用密集向量嵌入。

准备好打造最先进的搜索体验了吗?

足够先进的搜索不是一个人的努力就能实现的。Elasticsearch 由数据科学家、ML 操作员、工程师以及更多和您一样对搜索充满热情的人提供支持。让我们联系起来,共同打造神奇的搜索体验,让您获得想要的结果。

亲自试用