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

ChromaDB教程_2024最新版(下)

前言

Embeddings(嵌入)是表示任何类型数据的AI原生方式,它非常适用于各种AI驱动的工具和算法中。它们可以表示文本、图像,很快还可以表示音频和视频。有许多创建嵌入的选项,无论是在本地使用已安装的库,还是通过调用API。

Chroma为流行的嵌入提供商提供了轻量级的封装,使其易于在你的应用程序中使用。你可以在创建Chroma集合时设置一个嵌入函数,该函数将自动使用,也可以自己直接调用它们。
下面是提供嵌入函数的厂商,当然也包括国内厂商,可以自行了解,这里不再罗列。

在这里插入图片描述

下面博主通过Hugging Face提供的all-MiniLM-L6-v2模型创建嵌入,请各位紧随博主,以防迷路。

Q:如何通过langchain结合chroma完成检索

langchain提供了各种嵌入的接口,所以你根据它可以很容易完成数据的embedding。在试用前,必须安装相关模块:

序号模块名称模块用途
1langchain安装langchain框架,集成嵌入接口
2langchain-chroma集成chroma数据库
3sentence-transformershugging face模型库sdk,可以加载嵌入模型
4langchain_text_splitters集成文本切割器
5chromachroma数据库

1. 安装langchain

 pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple langchainpip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple langchain-corepip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple langchain-community

2. 安装langchain-chroma

pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple langchain-chroma

3. 安装langchain_text_splitters

pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple langchain_text_splitters

4. 安装sentence-transformers

sentence-transformers是一个python库,该库提供了一种简单的方法来计算句子、段落和图像的密集向量表示。这些模型基于BERT/RoBERTa/XLM RoBERTa等网络,在各种任务中实现了最先进的性能。同时也支持文本嵌入在向量空间中,使得相似的文本更接近,并且可以使用余弦相似度有效地找到。
在这里插入图片描述

pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple sentence-transformers 

5. 安装chroma

请参考 ChromaDB教程_2024最新版(上)完成。

6. 下载all-MiniLM-L6-v2

hugging face官网,将该模型下载至本地后,保持原目录存储,如下所示:
在这里插入图片描述

7. 基于all-MiniLM-L6-v2嵌入并查询的示例

from langchain_community.document_loaders import UnstructuredHTMLLoader
from langchain_text_splitters import CharacterTextSplitter
from langchain_community.vectorstores import Chroma# 加载txt/html文件为document
file_path = "html/云原生.txt"
# 数据存储位置
vector_dir = 'chromadb/col01'
# embedding模型
model_path = 'embedding/all-MiniLM-L6-v2'loader = UnstructuredHTMLLoader(file_path)
mydata = loader.load()# 创建文本分割器
text_splitter = CharacterTextSplitter(chunk_size=1000,chunk_overlap=0
)
# 创建文档
docs = text_splitter.split_documents(mydata)
# 集成embedding函数
my_embedding = SentenceTransformerEmbeddings(model_name=model_path
)
vectordb = Chroma.from_documents(documents=docs,embedding=my_embedding,persist_directory=vector_dir
)query = '一叶飞舟在哪里'
retriever = vectordb.as_retriever(search_type="mmr")
s = retriever.get_relevant_documents(query)
print(f'相似的文档:{s}')

执行结果如下:
在这里插入图片描述
当然你可以通过sqlite工具,看看这个库长什么样:
在这里插入图片描述

all-MiniLM-L6-v2支持384维的向量存储(适合学习、研究),如果维度更大,相对的存储要求更高。


结语

本文通过langchain结合chromadb实现相似建设,并且基于自定义embedding函数(依赖all-MiniLM-L6-v2)完成embedding。在这个基础上,可以结合大模型,完成最佳实践。

走过的、路过的盆友们,点点赞,收收藏,并加以指导,以备不时之需哈~

精彩回顾

ChromaDB教程_2024最新版(上)
基于LangChain的大模型学习手册之Embedding(保姆级)
基于DashScope+Streamlit构建你的机器学习助手(入门级)
基于LangChain的大模型学习手册(入门级)
基于Python的大模型学习手册(入门级)


在这里插入图片描述

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • jspdf踩坑 htmltocanvas
  • VScode的右下角的“Parsing open files“是什么意思
  • (2)leetcode 234.回文链表 141.环形链表
  • 微信支付开发-后台统计工厂实现
  • 站群服务器是指什么?企业为什么选择站群服务器?
  • 华为HarmonyOS地图服务 11 - 如何在地图上增加点注释?
  • 页面关键路径渲染详解
  • uniapp vue3 梯形选项卡组件
  • SpringBoot Admin调整类的日志级别
  • 2.计算机网络基础
  • 简单了解Maven与安装
  • 加密与安全_优雅存储二要素(AES-256-GCM )
  • 【redis】常用数据类型及命令
  • mongoDB-1
  • JavaEE: 深入探索TCP网络编程的奇妙世界(一)
  • 【技术性】Search知识
  • eclipse(luna)创建web工程
  • JavaScript设计模式系列一:工厂模式
  • js 实现textarea输入字数提示
  • js递归,无限分级树形折叠菜单
  • MySQL-事务管理(基础)
  • Node + FFmpeg 实现Canvas动画导出视频
  • passportjs 源码分析
  • Terraform入门 - 1. 安装Terraform
  • 百度小程序遇到的问题
  • 大整数乘法-表格法
  • 基于Volley网络库实现加载多种网络图片(包括GIF动态图片、圆形图片、普通图片)...
  • 前端面试之闭包
  • 实战|智能家居行业移动应用性能分析
  • 数据可视化之 Sankey 桑基图的实现
  • 算法-图和图算法
  • 通过git安装npm私有模块
  • 突破自己的技术思维
  • 我感觉这是史上最牛的防sql注入方法类
  • 做一名精致的JavaScripter 01:JavaScript简介
  • ​学习一下,什么是预包装食品?​
  • #if 1...#endif
  • #宝哥教你#查看jquery绑定的事件函数
  • #基础#使用Jupyter进行Notebook的转换 .ipynb文件导出为.md文件
  • (二)学习JVM —— 垃圾回收机制
  • (分类)KNN算法- 参数调优
  • (几何:六边形面积)编写程序,提示用户输入六边形的边长,然后显示它的面积。
  • (四)JPA - JQPL 实现增删改查
  • (转)linux 命令大全
  • (轉貼) 寄發紅帖基本原則(教育部禮儀司頒布) (雜項)
  • ***通过什么方式***网吧
  • .netcore如何运行环境安装到Linux服务器
  • .Net接口调试与案例
  • .NET开源项目介绍及资源推荐:数据持久层 (微软MVP写作)
  • @Responsebody与@RequestBody
  • [000-01-022].第06节:RabbitMQ中的交换机介绍
  • [Android Pro] listView和GridView的item设置的高度和宽度不起作用
  • [ASP.NET 控件实作 Day7] 设定工具箱的控件图标
  • [BeginCTF]真龙之力
  • [BZOJ4337][BJOI2015]树的同构(树的最小表示法)