当前位置: 首页 > news >正文

苏州网站建设相关技术/快手流量推广网站

苏州网站建设相关技术,快手流量推广网站,手机网站建设的背景,西安疫情最新消息今天又封了在 NLP 和 AI 领域,基于嵌入(Embeddings)进行文档检索已成为一种高效的解决方案。本文介绍如何使用 LangChain 构建 Multi-Vector Retriever,实现对长文档的分块索引和高效检索。 1. 环境准备 首先,我们需要安装相关…

在 NLP 和 AI 领域,基于嵌入(Embeddings)进行文档检索已成为一种高效的解决方案。本文介绍如何使用 LangChain 构建 Multi-Vector Retriever,实现对长文档的分块索引和高效检索。

1. 环境准备

首先,我们需要安装相关依赖库。

pip install langchain chromadb torch transformers

2. 加载文档并进行预处理

我们先使用 TextLoader 读取多个文档,并进行分块处理,以便后续向量化索引。

from langchain.document_loaders import TextLoader
from langchain.text_splitter import RecursiveCharacterTextSplitterloaders = [TextLoader("../docs/txt/paul_graham_essay.txt"),TextLoader("../docs/txt/state_of_the_union.txt"),
]
docs = []
for loader in loaders:docs.extend(loader.load())# 设定 chunk size 以确保文档分块合理
text_splitter = RecursiveCharacterTextSplitter(chunk_size=10000)
docs = text_splitter.split_documents(docs)

3. 选择嵌入模型

这里我们使用 HuggingFaceInstructEmbeddings 进行向量化,支持 GPU 加速。

from langchain.embeddings import HuggingFaceInstructEmbeddings
import torchembedding_model = HuggingFaceInstructEmbeddings(model_name='hkunlp/instructor-base',model_kwargs={'device': torch.device('cuda' if torch.cuda.is_available() else 'cpu')}
)

4. 构建向量存储与检索器

使用 Chroma 作为向量数据库,并配置 MultiVectorRetriever

from langchain.vectorstores import Chroma
from langchain.retrievers.multi_vector import MultiVectorRetriever
from langchain.storage import InMemoryStore
import uuid# 创建向量存储
vectorstore = Chroma(collection_name="full_documents", embedding_function=embedding_model)# 使用 InMemoryStore 作为存储层
store = InMemoryStore()
id_key = "doc_id"
retriever = MultiVectorRetriever(vectorstore=vectorstore, docstore=store, id_key=id_key)# 生成唯一文档 ID
doc_ids = [str(uuid.uuid4()) for _ in docs]

5. 进一步拆分文档并存储

使用 RecursiveCharacterTextSplitter 进一步拆分子文档,并添加到向量存储中。

child_text_splitter = RecursiveCharacterTextSplitter(chunk_size=400)sub_docs = []
for i, doc in enumerate(docs):_id = doc_ids[i]_sub_docs = child_text_splitter.split_documents([doc])for _doc in _sub_docs:_doc.metadata[id_key] = _idsub_docs.extend(_sub_docs)retriever.vectorstore.add_documents(sub_docs)
retriever.docstore.mset(list(zip(doc_ids, docs)))

6. 进行相似度搜索

我们可以使用 similarity_search 进行相似内容检索。

retriever.vectorstore.similarity_search("justice breyer")

或者使用 get_relevant_documents 查找相关文档:

retriever.get_relevant_documents("retriever")

7. 结论

通过 LangChain 的 Multi-Vector Retriever,我们能够高效地处理长文档并实现精准检索。结合 HuggingFace 的嵌入模型和 Chroma 向量数据库,可以实现快速的文本相似度匹配,非常适用于 法律文档、技术文档 等长文本搜索任务。

如果你对 LangChain 的更多应用感兴趣,欢迎在评论区交流!

如果你觉得这篇博文对你有帮助,请点赞、收藏、关注我,并且可以打赏支持我!

欢迎关注我的后续博文,我将分享更多关于人工智能、自然语言处理和计算机视觉的精彩内容。

谢谢大家的支持!

http://www.whsansanxincailiao.cn/news/30283284.html

相关文章:

  • 免费试用平台网站源码/百度关键词刷搜索量
  • 株洲第三方网站建设哪家好/google seo
  • 奶茶店加盟网站建设/惠州seo排名外包
  • wordpress好友添加/抖音seo公司
  • 外贸建网站哪家好/seo是什么意思为什么要做seo
  • 贵州省建设厅的网站/网络营销的概念及特征
  • 浙江省住房和城乡建设厅网官方网站/长尾关键词挖掘爱站网
  • 做生物学的网站/谷歌浏览器下载电脑版
  • 如何网上做个人广告/搜索引擎优化seo是什么
  • 做自媒体可利用的国外网站/上海最近三天的新闻
  • 深圳市深圳市住房和建设局网站首页/友情链接seo
  • 建筑工程素材资源网站/站内优化包括哪些
  • 手机网站按那个尺寸做/网络营销手段有哪四种
  • 淘宝客网站做seo有用吗/重庆网络推广专员
  • 品牌网站建设哪里有/广州各区风险区域最新动态
  • 专业找工作网站下载/百度平台商家
  • 服务器wordpress建站教程/网络平台运营是做什么的
  • 自己家的电脑做网站需要备案没/为什么sem的工资都不高
  • 成都专业的网站建站公司/百度信息流代运营
  • 建网站安全/自动秒收录网
  • 有哪些做伦敦金的网站/seo顾问多少钱
  • 园林公司网站建设费用/百度站长工具平台
  • 网站导航栏怎么设置/优化网站找哪家
  • 网站里自己怎么做推广/离我最近的电脑培训中心
  • 尖草坪网站建设/搜索关键词排名推广
  • 东莞站福公司工资/模板免费网站建设
  • 做网站的流程是什么/seo推广软件代理
  • 宁波seo网络推广定制多少钱/seo外链优化培训
  • wordpress阿里云全站加速/一个完整的策划案范文
  • 做网站用别人的源码可以吗/seo教程 seo之家