【Java程序员转大模型开发 基础篇-向量数据库 看这一篇全盘掌握】
前期知识回顾Java程序员转大模型开发 基础篇Java程序员转大模型开发 实战篇-rag系统连接redis提示写完文章后目录可以自动生成如何生成可参考右边的帮助文档文章目录前期知识回顾前言什么是向量数据库为什么要使用向量数据库向量数据库的几种检索方式余弦检索欧式检索chromadb向量数据库安装方式演示代码完整代码总结前言本文将为大家介绍智能体开发中的关键组件——向量数据库。我们将从基本概念入手系统地讲解向量数据库的定义、核心价值及应用场景。提示以下是本篇文章正文内容下面案例可供参考什么是向量数据库向量数据库是大模型开发中用于存储外部信息的关键组件其主要功能是通过语义相似性索引解决非结构化数据的相似性检索问题。为什么要使用向量数据库与传统Java开发中使用的结构化或非结构化数据库不同向量数据库通过将非结构化数据转化为向量Vector/嵌入Embedding形式进行存储。这种存储方式的关键优势在于能够有效解决传统数据库难以处理的语义相似性问题。向量数据库支持余弦检索、距离检索等多种检索方式可根据相似度返回查询结果。这一特性特别适用于为LLM语言模型提供对话时的上下文Prompt从而帮助大模型更准确地输出预期结果。向量数据库的几种检索方式余弦检索是在一个[-1~1]的余弦坐标系中两个信息通过转换后箭头方向完全相同 → 相似度 1方向完全相反 → 相似度 -1垂直 → 相似度 0结果越趋近于1相似度越高欧式检索欧式检索又称距离检索是通过计算高维空间中两个向量之间的直线距离来衡量其相似度的方法。距离越小表示相似度越高当距离为零时表示完全重合反之距离越大则相似度越低。简而言之欧式距离与相似度呈反比关系距离越小相似度越高距离越大相似度越低。chromadb向量数据库ChromaDB 是一款轻量级、开源、专为 AI 应用设计的向量数据库主打极简 API、开箱即用、本地优先是构建 RAG、语义搜索、推荐系统 最常用的入门级向量库Chroma。安装方式pipinstallchromadb演示代码引入的chromadb 库importconfig.modelsasmodelsimportchromadbfromchromadb.configimportSettings1.创建一个向量数据库操作类MyVectorDBConnectorinit构造方法来pythonclass MyVectorDBConnector:definit(self, collection_name: str, chromadb_client):“”初始化向量数据库连接器参数: collection_name: 要获取或创建的集合名称 chromadb_client: 已初始化的chromadb客户端实例 self.collection chromadb_client.get_or_create_collection(namecollection_name)通过chromadb.Client获取一个数据库连接chromadb_client.get_or_create_collection 方法来获取一个数据库的向量集合2.采用向量化方法对数据进行转换后通过 collection.add 方法将其存入向量数据库。其中documents 参数存储原始数据便于查询时返回原内容embeddings 参数存储向量化数据用于高效的向量检索ids 参数存储主键值defadd_documents(self,instructions,output):#添加文档# 为每个文档生成嵌入向量embeddingsself.embedding_fn(instructions)# 将文档和嵌入向量添加到集合中self.collection.add(documentsoutput,#原始文本答案embeddingsembeddings,#向量问题生成ids[fid{i}foriinrange(len(output))])3.通过collection.query方法查询向量数据库时系统会先将查询问题向量化生成query_embeddings。然后基于这些向量在embeddings数据中进行相似性搜索最终返回查询结果。获取原始文档数据时可通过results.get(“documents”)方法提取。defsearch(self,query,k5):resultsself.collection.query(query_embeddingsself.embedding_fn([query]),#问题进行向量化接受的是一个列表n_resultsk#返回最相似的k个)完整代码classMyVectorDBConnector:def__init__(self,collection_name,embedding_fn):chromadb_clientchromadb.Client(Settings(allow_resetTrue))#允许重置数据库chromadb_client.reset()# 从数据库中获取或创建一个集合self.collectionchromadb_client.get_or_create_collection(namecollection_name)self.embedding_fnembedding_fn#要做向量化的方法defadd_documents(self,instructions,output):#添加文档# 为每个文档生成嵌入向量embeddingsself.embedding_fn(instructions)# 将文档和嵌入向量添加到集合中self.collection.add(documentsoutput,#原始文本答案embeddingsembeddings,#向量问题生成ids[fid{i}foriinrange(len(output))])defsearch(self,query,k5):resultsself.collection.query(query_embeddingsself.embedding_fn([query]),#问题进行向量化接受的是一个列表n_resultsk#返回最相似的k个)returnresults vector_dbMyVectorDBConnector(health_qa,get_embedding)vector_db.add_documents(instruction,output)#将问题进行向量化并且和答案原文进行存储总结以上就是关于向量数据库的介绍以及常见的连接方式。如有任何疑问欢迎通过私信或留言的方式联系我。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2419464.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!