如何在Langchain中利用Chroma DB作为向量存储

打印 上一主题 下一主题

主题 854|帖子 854|积分 2562

理解向量数据库

在当代机器学习和自然语言处理应用中,向量数据库(如Chroma DB)已变得至关紧张。它们优化了高维向量的存储和检索,这对于语义搜索、保举体系和信息检索等任务至关紧张。在LangChain的背景下,Chroma这样的向量存储的集成可以显著增强数据处理能力。
向量基础知识

在机器学习中,数据通常会被转换为可以在多维空间中表示文本、图像或其他信息的向量。每个维度捕捉到数据的特定特征。比方,句子“猫坐在垫子上”可以通过Word2Vec、GloVe或更新的基于transformer的模子(如BERT或GPT)生成的嵌入转换为向量。每个向量表示可以捕捉语义相似性——语义相似的句子会在高维空间中生成相似的向量。
介绍Chroma DB

Chroma DB是一个专为高效处理嵌入而计划的向量存储。其架构旨在实现高吞吐量和低延迟操作,非常得当必要快速访问数据的应用程序,如搜索查询或及时分析。Chroma支持多种索引方法,并提供简朴的API以无缝地与向量数据交互。
Chroma DB的关键特性


  • 可扩展性:Chroma DB可以处理大型数据集,并随着数据量增长良好扩展。
  • 快速查询响应:它针对高速查询和检索进行了优化,可以或许快速访问相关数据。
  • 语义搜索能力:其向量表示允许进行语义搜索,查询结果不仅在语法上相似,而且在上下文上也雷同。
  • 集成:Chroma提供与现有框架的简朴集成路径,特别是与LangChain的集成。
设置Chroma DB

要在LangChain中开始利用Chroma DB作为向量存储,起首必要设置环境并安装必要的软件包。
第一步:环境设置

假设您已经安装了Python,可以利用以下命令设置环境:
  1. pip install langchain
  2. pip install chromadb
  3. pip install transformers
复制代码
这将安装 langchain、 chromadb和 transformers,供您创建和管理涉及向量和嵌入的管道。
第二步:初始化Chroma DB

接下来,您必要初始化Chroma DB。下面是一个简朴的示例:
  1. import chromadb
  2. from chromadb import Client
  3. # 初始化ChromaDB客户端
  4. chroma_client = Client()
复制代码
此代码片断创建了一个客户端实例,使您可以与Chroma的功能进行交互。
在LangChain中集成Chroma DB

初始化Chroma DB后,下一步是将其与LangChain集成。这种集成使您可以或许无缝管理和检索嵌入。
第三步:利用Chroma创建LangChain内存实例

在LangChain中,您可以设置一个利用ChromaDB进行存储的内存实例:
  1. from langchain.memory import ChromaMemory
  2. # 创建ChromaMemory实例
  3. memory = ChromaMemory(
  4.     chroma_client=chroma_client,   
  5.     collection_name="my_vector_store"   
  6.     )
复制代码
ChromaMemory类接受初始化的Chroma客户端和一个聚集名称。此聚集名称充当存储向量的命名空间。
第四步:向Chroma DB添加数据

现在可以将嵌入添加到ChromaDB中。假设您有一个必要向量化的句子聚集:
  1. from transformers import AutoTokenizer, AutoModel
  2. import torch
  3. # 加载预训练的transformer模型以生成嵌入
  4. model_name = "sentence-transformers/all-MiniLM-L6-v2"
  5. tokenizer = AutoTokenizer.from_pretrained(model_name)
  6. model = AutoModel.from_pretrained(model_name)
  7. # 示例句子
  8. sentences = [
  9.     "The cat sits on the mat.",   
  10.     "A dog is playing in the park."   
  11.     ]
  12. # 创建嵌入的函数
  13. def create_embeddings(sentences):
  14.     inputs = tokenizer(sentences, padding=True, truncation=True, return_tensors='pt')   
  15.     with torch.no_grad():     
  16.        embeddings = model(**inputs).last_hidden_state.mean(dim=1)  # 平均池化   
  17.     return embeddings.numpy()
  18. # 创建嵌入并添加到Chroma
  19. embeddings = create_embeddings(sentences)
  20. for i, embedding in enumerate(embeddings):
  21.     memory.add("Sentence_{}".format(i), embedding.tolist())   
  22.     ```
  23. 在这个示例中,我们利用sentence-transformers库的模型将文本转换为嵌入。然后,将每个嵌入添加到Chroma向量存储中。
  24. ## 查询Chroma DB以进行相似性搜索
  25. 在将数据添加到Chroma后,您可以利用其功能进行语义搜索。
  26. ### 第五步:执行相似性搜索
  27. Chroma DB提供了使用向量相似性检索相似嵌入的功能。以下是查询方法:
复制代码
为新句子创建嵌入
  1. newsentence = "A cat is lying on a carpet."
  2. newembedding = createembeddings([newsentence])
复制代码
在Chroma数据库中搜索相似向量

  1. results = memory.similaritysearch(newembedding[0], top_k=2)
复制代码
显示结果
  1. for result in results:
  2.   print("Retrieved:", result)
复制代码
在此示例中,我们为新的查询句子创建嵌入,然后利用similaritysearch 方法从Chroma存储中获取最相似的向量。topk`参数指定您盼望检索的结果数量。
高级用法:细化和自界说

第六步:自界说处理流程

对于更复杂的应用,考虑细化嵌入创建或自界说查询过程。比方,您可能盼望整合与向量相关的元数据,如文档泉源或上下文。
为向量添加元数据

您可以通过修改 add方法来在向量旁边存储补充元数据:
  1. metadata = [
  2.     {"source": "Document_1", "category": "animal"},   
  3.     {"source": "Document_2", "category": "animal"},   
  4.     ]
  5. for i, (embedding, meta) in enumerate(zip(embeddings, metadata)):
  6.     memory.add(   
  7.         "Sentence_{}".format(i),        
  8.         embedding.tolist(),        
  9.         metadata=meta    )   
  10.         ```
  11. 通过这种设置,Chroma DB中的每个向量都携带上下文信息,您可以在以后用于过滤或分类查询。
  12. ### 第七步:处理更新和删除
  13. 随着数据的演变,您可能需要更新或删除Chroma DB中的向量:
复制代码
更新现有嵌入
  1. memory.update("Sentence0", newembedding[0].tolist())
复制代码
删除嵌入
  1. memory.delete("Sentence_1")
复制代码
这些操作使您可以或许有用地管理向量存储,确保其反映最新的数据。
结论

在这篇综合指南中,我们探究了如何在LangChain中设置和利用Chroma DB作为向量存储。我们探索了基础知识和实际集成,并补充了大量示例。随着自然语言处理领域的不停发展,利用Chroma DB这样强大的工具将促进创新和高效的高维数据处理应用。

如何学习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大模子商业化落地方案


作为普通人,入局大模子期间必要连续学习和实践,不停提高本身的技能和认知水平,同时也必要有责任感和伦理意识,为人工智能的健康发展贡献力量。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

罪恶克星

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表