Langchain 与 Elasticsearch:创新数据检索的融合实战

这篇具有很好参考价值的文章主要介绍了Langchain 与 Elasticsearch:创新数据检索的融合实战。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、简介

在信息爆炸的时代,有效地检索和处理数据变得至关重要。Langchain 和 Elasticsearch 的结合,为我们提供了一个强大的工具,以更智能的方式进行数据检索和分析。

作为一名拥有多年 Elasticsearch 实战经验的技术博主,我将在本文中详细介绍这两种技术的整合应用。

2、LangChain 简介

Langchain是一个旨在简化自然语言处理任务的库。它允许开发者轻松地集成和使用各种 AI 模型,如 GPT-3,来处理复杂的语言任务。

3、Elasticsearch 简介

Elasticsearch 是一个高度可扩展的开源全文搜索和分析引擎。它允许用户快速、实时地进行和分析大量数据。

4、LangChain 与 Elasticsearch 的整合

结合 Langchain和 Elasticsearch,我们可以利用 AI 模型的强大语言处理能力,与 Elasticsearch 的高效数据检索功能,实现智能化的搜索解决方案。

Langchain 与 Elasticsearch:创新数据检索的融合实战,langchain,elasticsearch,jenkins,大数据,搜索引擎

4.1 案例1:Langchain 连接 Elasticsearch

以下是一个实际的代码示例,展示了如何使用 Langchain与 Elasticsearch 进行数据检索:

python
Copy code
import ssl
import openai
from elasticsearch import Elasticsearch
from langchain_community.vectorstores import ElasticsearchStore
from langchain_openai import OpenAIEmbeddings

from langchain.text_splitter import CharacterTextSplitter
from langchain_community.document_loaders import TextLoader

# 设置代理访问 API
os.environ["HTTP_PROXY"] = "http://127.0.0.1:33210"
os.environ["HTTPS_PROXY"] = "http://127.0.0.1:33210"
os.environ["ALL_PROXY"] = "socks5://127.0.0.1:33211"

# 加载文档
file_path = 'conf/state_of_the_union.txt'
encoding = 'utf-8'
loader = TextLoader(file_path, encoding=encoding)
documents = loader.load()

# 文档分割
text_splitter = CharacterTextSplitter(chunk_size=1000, chunk_overlap=0)
docs = text_splitter.split_documents(documents)

# 连接 Elasticsearch
conn = Elasticsearch(
    "https://127.0.0.1:9200",
    ca_certs = "certs/http_ca.crt",
    basic_auth = ("elastic", "changeme"),
    verify_certs=False
)

# 创建索引并进行检索
embeddings = OpenAIEmbeddings()
db = ElasticsearchStore.from_documents(docs, embeddings, index_name="test_index", es_connection=conn)
db.client.indices.refresh(index="test_index")
query = "What did the president say about Ketanji Brown Jackson"
results = db.similarity_search(query)
print(results)

这段代码展示了如何加载、处理文档,并通过 Langchain 结合 Elasticsearch 进行智能检索。

执行结果:

Langchain 与 Elasticsearch:创新数据检索的融合实战,langchain,elasticsearch,jenkins,大数据,搜索引擎Langchain 与 Elasticsearch:创新数据检索的融合实战,langchain,elasticsearch,jenkins,大数据,搜索引擎

4.2 案例2:精细化处理

进一步,我们可以为文档添加更丰富的元数据,并利用这些元数据进行更精细化的搜索:

# 添加元数据
for i, doc in enumerate(docs):
    doc.metadata["date"] = f"{range(2010, 2020)[i % 10]}-01-01"
    doc.metadata["rating"] = range(1, 6)[i % 5]
    doc.metadata["author"] = ["John Doe", "Jane Doe"][i % 2]

# 再次连接 Elasticsearch
conn = Elasticsearch(
    "https://127.0.0.1:9200",
    ca_certs = "certs/http_ca.crt",
    basic_auth = ("elastic", "changeme"),
    verify_certs=False
)

# 创建带有元数据的索引
db = ElasticsearchStore.from_documents(docs, embeddings, index_name="test-metadata", es_connection=conn)

# 执行检索
query = "What did the president say about Ketanji Brown Jackson"
docs = db.similarity_search(query)
print(docs[0].metadata)

# 应用过滤条件
docs = db.similarity_search(query, filter=[{"term": {"metadata.author.keyword": "John Doe"}}])
print(docs[0].metadata)

执行结果:

  • 1、写入 Elasticsearch 索引,效果图:

Langchain 与 Elasticsearch:创新数据检索的融合实战,langchain,elasticsearch,jenkins,大数据,搜索引擎
  • 2、执行检索效果:

Langchain 与 Elasticsearch:创新数据检索的融合实战,langchain,elasticsearch,jenkins,大数据,搜索引擎

在这个案例中,我们通过添加元数据来增强文档的描述性,使得检索结果更加精确和有用。

5、问题解决

在实际应用中,我们可能会遇到各种问题,例如网络连接问题、配置错误或代码逻辑问题。

在这种情况下,确保你的环境设置正确,并且仔细检查代码中的每个步骤,以确保所有操作按预期进行。

6、总结

通过结合 Langchain 和 Elasticsearch,我们可以构建一个强大的数据检索系统,不仅能处理大量数据,还能以智能和高效的方式进行搜索和分析。

官网代码都不能跑起来,需要自己摸索好长时间!

这种技术的融合,为处理复杂的信息检索任务提供了新的可能。

希望这篇博客能够帮助读者更好地理解 Langchain和 Elasticsearch 如何结合,以及如何在实际项目中应用这些技术。这种整合为数据检索和自然语言处理的未来发展开辟了新的道路。

7、参考资料

Langchain 官方文档:

https://python.langchain.com/docs/integrations/vectorstores/elasticsearch

推荐阅读

  1. 全网首发!从 0 到 1 Elasticsearch 8.X 通关视频

  2. 重磅 | 死磕 Elasticsearch 8.X 方法论认知清单

  3. 如何系统的学习 Elasticsearch ?

  4. 2023,做点事

Langchain 与 Elasticsearch:创新数据检索的融合实战,langchain,elasticsearch,jenkins,大数据,搜索引擎

更短时间更快习得更多干货!

和全球 近2000+ Elastic 爱好者一起精进!

Langchain 与 Elasticsearch:创新数据检索的融合实战,langchain,elasticsearch,jenkins,大数据,搜索引擎文章来源地址https://www.toymoban.com/news/detail-803166.html

到了这里,关于Langchain 与 Elasticsearch:创新数据检索的融合实战的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 搜索引擎(大数据检索)论述[elasticsearch原理相关]

    首先需要大致知道搜索引擎有大致几类:1.全文搜索引擎 2.垂直搜索引擎 3.类目搜索引擎等。 1.全文搜索引擎:是全文本覆盖的,百度,google等都是全文本搜索,就是我搜一个词项“方圆”,那么这个词项可以是数字平方的概念,可以是一个人名,可以是一首歌等,所有的相

    2023年04月08日
    浏览(31)
  • 用Elasticsearch做大规模数据的多字段、多类型索引检索

    本文同时发布在我的个人博客 之前尝试了用mysql做大规模数据的检索优化,可以看到单字段检索的情况下,是可以通过各种手段做到各种类型索引快速检索的,那是一种相对简单的场景。 但是实际应用往往会复杂一些 —— 各类索引(匹配、全文检索、时间范围)混合使

    2024年04月10日
    浏览(23)
  • 信息检索与数据挖掘 | 【实验】排名检索模型

    在Experiment1的基础上实现最基本的Ranked retrieval model Input :a query (like Ron Weasley birthday) Output : Return the top K (e.g., K = 100) relevant tweets. Use SMART notation: lnc.ltn Document: logarithmic tf (l as first character), no idf and cosine normalization Query: logarithmic tf (l in leftmost column), idf (t in second column), no norma

    2024年02月08日
    浏览(21)
  • MySQL检索数据和排序数据

    目录 一、select语句 1.检索单个列(SELECT 列名 FROM 表名;) 2.检索多个列(SELECT 列名1,列名2,列名3  FROM 表名;)  3.检索所有的列(SELECT * FROM 表名;) 4.检索不同的行(SELECT 列名 FROM 表名;) 5.限制结果(SELECT 列名 FROM 表名 LIMIT 行数;) 6.使用完全限定的表名(SELECT 表名.列名 F

    2024年02月15日
    浏览(18)
  • AI数据技术02:RAG数据检索

            在人工智能的动态环境中,检索增强生成(RAG)已成为游戏规则的改变者,彻底改变了我们生成文本和与文本交互的方式。RAG 使用大型语言模型 (LLM) 等工具将信息检索的强大功能与自然语言生成无缝结合,为内容创建提供了一种变革性的方法。         在

    2024年02月03日
    浏览(21)
  • 【pandas基础】--数据检索

    pandas 的数据检索功能是其最基础也是最重要的功能之一。 pandas 中最常用的几种数据过滤方式如下: 行列过滤:选取指定的行或者列 条件过滤:对列的数据设置过滤条件 函数过滤:通过函数设置更加复杂的过滤条件 本篇所有示例所使用的测试数据如下: pandas 中最常用的按

    2024年02月03日
    浏览(21)
  • 深入学习MYSQL-数据检索

    前言 由于大部分基础知识都已经学过了,这里只把觉得应该记录一下的知识点做个笔记。然后以下笔记和sql均来自书籍(MYSQL必会知识),会根据看的其它书记继续调整和优化笔记。 LIMIT 注:这个平时的SQL查询没有什么区别,我主要展示一下在命令行里面怎么展示结果。 总共8条

    2024年02月05日
    浏览(17)
  • Java查询es数据,根据指定id检索(in查询),sql权限过滤,多字段匹配检索,数据排序

    Java集成Elasticsearch,进行索引数据查询,并进行sql权限过滤,指定id检索(in查询),多字段匹配检索,数据排序。由于权限过滤是根据sql语句判断当前用户或其部门可查询的数据,所以采用以下方法: 1.通过sql过滤出当前用户可查询的数据id集合idsList; 2.将当前用户可查询的

    2024年02月22日
    浏览(38)
  • ES(检索数据)

    Elasticsearch,简称ES。 功能:实时的存储、检索数据、日志统计、分析、系统监控 官网:https://www.elastic.co/cn 没有ES之前,使用Mysql实现模糊查询 LIKE CONCAT(\\\'%\\\', \\\"搜索词\\\", \\\'%\\\') 问题: 1. 搜索词是一个整体,不能拆分 2. 效率低,不会用到索引 学ES之后: 在ES中存储一些数据(id,商

    2024年01月20日
    浏览(18)
  • 大数据向量检索的细节问题

    背景:现有亿级别数据(条数),其文本大小约为150G,label为字符串,content为文本。用于向量检索,采用上次的试验进行,但有如下问题需要面对: 向量维度一版采用768的bert系列的模型推理得到,openai也有类似的功能,不过是2倍的维度(即1536),至于哪个好坏,都宣称自

    2024年02月12日
    浏览(15)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包