马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
导读:在AI应用开辟中,向量数据库已成为处理惩罚大规模语义搜索和相似性匹配的核心组件。本文通过详确的代码示例,深入探究LangChain框架与Milvus向量数据库的集成实践,为开辟者提供生产级别的向量数据管明确决方案。
文章聚焦于向量数据库操作的两个关键环节:数据的高效新增和精准删除。通过DashScope嵌入模子的设置与应用,读者将相识怎样建立稳定的向量化pipeline,实现从文本内容到向量存储的完整流程。特别值得关注的是,文章详细解析了批量文档插入的ID管理机制,以及基于ID的删除操作怎样在分布式环境中包管数据同等性。
概述
本文将详细先容怎样使用LangChain框架整合Milvus向量数据库,重点演示向量数据的新增和删除操作的完整实现过程。通过实际案例,您将掌握在生产环境中管理向量数据库的核心技能。
本文继上一篇文章进一步报告:新版LangChain向量数据库VectorStore设计详解-CSDN博客
技术需求与目标
本次实战的重要目标包罗:
- 建立LangChain与Milvus向量数据库的集成连接
- 实现向量数据的批量插入操作
- 掌握基于ID的数据删除机制
- 明确向量数据库操作的最佳实践
环境设置与依赖安装
官方文档参考
LangChain官方文档地址:Milvus | 🦜️🔗 LangChain
依赖包安装
- pip install langchain_community
- pip install dashscope
- pip install langchain_milvus
复制代码 核心实现代码
导入必要的库文件
- from langchain_community.embeddings import DashScopeEmbeddings
- # 注意:旧版本使用 from langchain.vectorstores import Milvus
- from langchain_milvus import Milvus # 推荐使用新版本导入方式
- from langchain_core.documents import Document
复制代码 初始化嵌入模子和向量存储
- # 配置DashScope嵌入模型
- embeddings = DashScopeEmbeddings(
- model="text-embedding-v2", # 使用第二代通用文本嵌入模型
- max_retries=3,
- dashscope_api_key="sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" # 请替换为您的实际API密钥
- )
- # 初始化Milvus向量存储
- vector_store = Milvus(
- embeddings,
- connection_args={"uri": "http://192.168.19.152:19530"}, # Milvus服务器连接地址
- collection_name="langchain_example", # 集合名称
- )
复制代码 准备测试数据集
- # 创建多样化的文档样本数据
- document_1 = Document(
- page_content="I had chocolate chip pancakes and scrambled eggs for breakfast this morning.",
- metadata={"source": "tweet"},
- )
- document_2 = Document(
- page_content="The weather forecast for tomorrow is cloudy and overcast, with a high of 62 degrees.",
- metadata={"source": "news"},
- )
- document_3 = Document(
- page_content="Building an exciting new project with LangChain - come check it out!",
- metadata={"source": "tweet"},
- )
- document_4 = Document(
- page_content="Robbers broke into the city bank and stole $1 million in cash.",
- metadata={"source": "news"},
- )
- document_5 = Document(
- page_content="Wow! That was an amazing movie. I can't wait to see it again.",
- metadata={"source": "tweet"},
- )
- document_6 = Document(
- page_content="Is the new iPhone worth the price? Read this review to find out.",
- metadata={"source": "website"},
- )
- document_7 = Document(
- page_content="The top 10 soccer players in the world right now.",
- metadata={"source": "website"},
- )
- document_8 = Document(
- page_content="LangGraph is the best framework for building stateful, agentic applications!",
- metadata={"source": "tweet"},
- )
- document_9 = Document(
- page_content="The stock market is down 500 points today due to fears of a recession.",
- metadata={"source": "news"},
- )
- document_10 = Document(
- page_content="I have a bad feeling I am going to get deleted :(",
- metadata={"source": "tweet"},
- )
- # 将所有文档组织为列表
- documents = [
- document_1, document_2, document_3, document_4, document_5,
- document_6, document_7, document_8, document_9, document_10,
- ]
复制代码 数据插入操作
- # 为每个文档生成唯一的ID标识符
- ids = [str(i+1) for i in range(len(documents))]
- print("生成的文档ID列表:", ids)
- # 执行批量文档插入操作
- result = vector_store.add_documents(documents=documents, ids=ids)
- print("插入操作结果:", result)
复制代码 数据删除操作
- # 根据指定ID删除文档
- result = vector_store.delete(ids=["1"])
- print("删除操作结果:", result)
- # 删除操作返回的统计信息解释:
- # insert count: 插入数量
- # delete count: 删除数量
- # upsert count: 更新插入数量
- # timestamp: 操作时间戳
- # success count: 成功数量
- # err count: 错误数量
复制代码 操作结果分析
删除操作执行后,系统返回详细的统计信息,格式示例如下:
- (insert count: 0, delete count: 1, upsert count: 0, timestamp: 456798840753225732, success count: 0, err count: 0)
复制代码 该结果表明乐成删除了一条纪录,操作过程中未出现错误。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
|