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

【LlamaIndex】LlamaIndex与Milvus实现知识库

一、系统概述

本系统基于LlamaIndex框架和Milvus向量数据库实现了一个完整的知识库解决方案,支持从文本或文档创建知识库,并提供高效的语义相似度检索功能。核心功能包括:

  • 利用通义千问嵌入模型生成文本向量
  • 将向量数据存储到Milvus向量数据库
  • 支持文本列表和文档目录两种知识库创建方式
  • 提供基于语义的相似度检索能力

技术栈:

  • 核心框架:LlamaIndex(数据处理与检索)
  • 向量数据库:Milvus(向量存储与相似度计算)
  • 嵌入模型:通义千问text-embedding-v4(文本向量化)
  • 开发语言:Python 3.x

二、核心组件解析

1. DashScopeEmbedding类(通义千问嵌入模型)

该类继承自LlamaIndex的BaseEmbedding,实现了基于通义千问嵌入模型的文本向量化功能。

核心属性
  • _client:OpenAI兼容客户端,用于调用通义千问嵌入API
初始化参数
  • api_key:通义千问API密钥(当前代码中使用默认密钥,实际生产环境需替换)
核心方法
  • 同步接口:

    • _get_query_embedding:生成查询文本的嵌入向量
    • _get_text_embedding:生成单段文本的嵌入向量
    • _get_text_embeddings:生成多段文本的嵌入向量
    • _get_embeddings:底层实现,调用API生成向量(维度1024)
  • 异步接口:

    • _aget_query_embedding/_aget_text_embedding/_aget_text_embeddings:对应同步方法的异步版本
    • _aget_embeddings:通过事件循环实现异步调用

2. MilvusKnowledgeBase类(知识库核心类)

该类封装了知识库的创建、存储和检索功能,是系统的核心业务类。

初始化参数
  • collection_name:Milvus集合名称(默认:“knowledge_base”)
  • milvus_uri:Milvus服务地址(默认:“http://127.0.0.1:19530”)
核心属性
  • embed_model:嵌入模型实例(DashScopeEmbedding)
  • vector_store:Milvus向量存储实例(配置维度1024)
  • storage_context:LlamaIndex存储上下文
  • retriever:检索器实例(用于相似度查询)
核心方法
(1)知识库创建
# 从文本列表创建知识库
def create_from_texts(self, texts: List[str]) -> bool:# 将文本转换为Document对象# 通过VectorStoreIndex存储到Milvus# 初始化检索器(top_k=3)
# 从文档目录创建知识库
def create_from_documents(self, documents_directory: str) -> bool:# 使用SimpleDirectoryReader加载目录下的文档# 支持多种格式(依赖LlamaIndex的文档加载器)# 存储到Milvus并初始化检索器
(2)相似度检索
def similarity_search(self, query: str, top_k: int = 5) -> List[dict]:# 调用检索器获取相似节点# 格式化返回结果(文本、相似度分数、元数据)

三、使用流程

1. 初始化知识库

kb = MilvusKnowledgeBase(collection_name="demo_knowledge_base",milvus_uri="http://127.0.0.1:19530"
)

2. 构建知识库

  • 从文本列表构建:
sample_texts = ["LlamaIndex是一个用于构建检索增强生成(RAG)应用的数据框架...",# 更多文本...
]
kb.create_from_texts(sample_texts)
  • 从文档目录构建:
kb.create_from_documents("./documents_directory")  # 目录包含各类文档

3. 执行检索

results = kb.similarity_search("什么是LlamaIndex?", top_k=3)
for i, doc in enumerate(results):print(f"{i+1}. {doc['text']} (相似度: {doc['score']:.4f})")

四、代码执行流程说明

  1. 初始化阶段

    • 创建DashScopeEmbedding实例,配置通义千问API客户端
    • 初始化MilvusVectorStore,指定集合名称、服务地址和向量维度
    • 创建StorageContext关联向量存储
  2. 知识库

http://www.dtcms.com/a/597670.html

相关文章:

  • 如何查看网站是谁建设的茂名住房和城乡建设厅网站
  • 从图像导数到边缘检测:探索Sobel与Scharr算子的原理与实践
  • vue路由路径加上自动退出登录
  • 推图制作网站无法连接到wordpress
  • Java面试题2:Java线程池原理
  • 小企业网站源码wordpress主题放在那个文件夹
  • HarmonyOS动画性能提升:renderGroup缓存与属性动画优化
  • 玉器企业网站源码wordpress外观小工具
  • kotlin扩展函数是如何实现的
  • 农业科技工作服务站建站模板让网站不要保存密码怎么做
  • 深入学习Redis():Redis内存模型
  • 输出模式下,上下拉电阻不起作用的原因:
  • 如何让PVC制品更安全?稀土抑烟剂助力安全防护
  • Python基础教学-可迭代的(Iterable)和迭代器(iterator)的区别-由Deepseek产生
  • 摄影作品网站推荐网站全屏代码
  • 网站开发中加入cad功能一个空间能否做两个网站
  • SM2 vs RSA/ECC:双算法 SSL 证书的性能对比与优化方案
  • 使用微信小程序实现多格验证码效果
  • 用node.js可以做网站吗网站的发布与推广怎么写
  • 【JavaEE进阶】-- 加密算法
  • 58同城本地版下载优化设计高中
  • 入门|利用 Highcharts 的 ES6/ESM 模块安装方案
  • 【NGINX的学习】
  • 重庆南坪网站建设公司学校网站总务建设
  • C++ yjx
  • 网站开发原型 图站长工具星空传媒
  • 【C++进阶】C++中的继承
  • 【大模型量化】Qwen3-VL + Lora监督微调 + 4bit量化 | VLM模型
  • 哪个网站最好微信开发者文档小程序
  • 免费黄页网站互联网众筹网站怎样建设