LangChain与Elasticsearch向量数据库的完美结合

在过去的一年中,生成式 AI (Generative AI) 领域取得了显著的进展。许多新的服务和工具应运而生。其中,LangChain 已成为构建大语言模型 (LLM) 应用程序(例如检索增强生成 (RAG) 系统)最受欢迎的框架之一。该框架极大地简化了原型开发,并使开发者能够轻松实验不同的模型和检索系统。

最近Elasticsearch将其集成从社区包升级为官方的 LangChain 合作伙伴包。这一升级使得在 LangChain 应用程序中引入 Elasticsearch 功能变得更加简便。Elastic 团队通过专门的代码库管理代码和发布过程。

Elasticsearch 是目前最灵活且性能卓越的检索系统之一,具备可扩展的数据存储和向量数据库功能。Elastic 的一个重要目标是成为最开放的检索系统。Elasticsearch与 LangChain 等库紧密合作,并为生成式 AI 生态系统添加了原生支持功能,从将 Elasticsearch 作为向量数据库,到实现混合搜索,再到协调完整的 RAG 应用程序。

使用 Elasticsearch 和 LangChain 快速构建 RAG 系统

RAG 是一种为用户提供非常相关答案的技术。相比直接使用大语言模型 (LLM),它的主要优点在于可以轻松集成用户数据,并且能够最大程度地降低 LLM 出现错误信息的风险。这是通过增加一个文档检索步骤来实现的,该步骤为 LLM 提供相关的上下文信息。

Elasticsearch 一直是进行相关文档检索的首选解决方案,并且持续引领创新,提供多种检索策略。在将 Elasticsearch 集成到 LangChain 时,我们使用户能够轻松选择最常见的检索策略,比如密集向量、稀疏向量、关键字检索或混合检索。同时,也允许高级用户进一步自定义这些策略。

构建一个简单的 RAG 应用程序

按如下方式安装包pip install langchain-elasticsearch;然后,我们将一些示例文档添加到我们的 Elasticsearch 存储中。

texts = [
    "LangChain is a framework for developing applications powered by large language models (LLMs).",    
    "Elasticsearch is a distributed, RESTful search and analytics engine capable of addressing a growing number of use cases.",    
    ...
]
es_store.add_texts(texts)

接下来,我们使用 OpenAI 提供的默认 gpt-3.5-turbo 模型作为LLM模型,该模型也为 ChatGPT 提供支持。

from langchain_openai import ChatOpenAI

llm = ChatOpenAI(api_key="sk-...") # or set the OPENAI_API_KEY environment variable

采用一个标准提示来指示LLM。将 Elasticsearch转换为 LangChain 检索器。最后,我们将检索步骤与将文档添加到提示符并将其发送到 LLM.

现在用户可以就数据提出问题:

rag_chain.invoke("Which frameworks can help me build LLM apps?")

LangChain 和 Elasticsearch 检索器

Elasticsearch 存储提供了现成的常见检索策略,开发者可以自由探索最适合特定场景的方案。但如果数据模型比单一字段的文本更复杂呢?例如,如果索引包含了一个网络爬虫生成的文档,这些文档包含文本、标题、URL 和标签等多个字段,而所有这些字段都对搜索至关重要,应该如何处理?Elasticsearch 的查询 DSL (Query DSL) 为用户提供了完全的搜索数据灵活性。在 LangChain 中,ElasticsearchRetriever 可以直接实现这种灵活性。只需定义一个函数,将用户输入的查询映射到 Elasticsearch 请求即可。

假设我们想在检索步骤中添加语义重新排序功能。通过增加 Cohere 重新排序步骤,排在前面的结果将变得更加相关,而无需额外的手动调整。为此,让我们定义了一个 Retriever,它接收一个返回对应 Query DSL 结构的函数。

这个检索器可以顺畅地集成到上面的 RAG 代码中。这样一来, RAG 流程中的检索部分将变得更加精确,从而将更相关的文档传递给大语言模型 (LLM),最终提供更为相关的答案。

Elastic 对 LangChain 生态系统的持续投入,将最新的检索创新融入了这个最受欢迎的生成式 AI (GenAI) 库之一。通过此次合作,Elastic 和 LangChain 让开发者能够快速、轻松地为用户构建 RAG 解决方案,同时提供了对结果质量进行深入调整的灵活性。

如何学习AI大模型?

作为一名热心肠的互联网老兵,我决定把宝贵的AI知识分享给大家。 至于能学习到多少就看你的学习毅力和能力了 。我已将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

一、全套AGI大模型学习路线

AI大模型时代的学习之旅:从基础到前沿,掌握人工智能的核心技能!

二、640套AI大模型报告合集

这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。

三、AI大模型经典PDF籍

随着人工智能技术的飞速发展,AI大模型已经成为了当今科技领域的一大热点。这些大型预训练模型,如GPT-3、BERT、XLNet等,以其强大的语言理解和生成能力,正在改变我们对人工智能的认识。 那以下这些PDF籍就是非常不错的学习资源。

四、AI大模型商业化落地方案

作为普通人,入局大模型时代需要持续学习和实践,不断提高自己的技能和认知水平,同时也需要有责任感和伦理意识,为人工智能的健康发展贡献力量。

相关推荐
深圳南柯电子1 分钟前
深圳南柯电子|电子设备EMC测试整改:常见问题与解决方案
人工智能
Kai HVZ2 分钟前
《OpenCV计算机视觉》--介绍及基础操作
人工智能·opencv·计算机视觉
biter00887 分钟前
opencv(15) OpenCV背景减除器(Background Subtractors)学习
人工智能·opencv·学习
吃个糖糖13 分钟前
35 Opencv 亚像素角点检测
人工智能·opencv·计算机视觉
Mr.131 小时前
数据库的三范式是什么?
数据库
Cachel wood1 小时前
python round四舍五入和decimal库精确四舍五入
java·linux·前端·数据库·vue.js·python·前端框架
IT古董1 小时前
【漫话机器学习系列】017.大O算法(Big-O Notation)
人工智能·机器学习
凯哥是个大帅比1 小时前
人工智能ACA(五)--深度学习基础
人工智能·深度学习
Python之栈1 小时前
【无标题】
数据库·python·mysql
小小工匠1 小时前
ElasticSearch - 深入解析 Elasticsearch Composite Aggregation 的分页与去重机制
elasticsearch·composite·after_key·桶聚合分页