RAG-Milvus
Created|Updated
|Post Views:
RAG-Milvus
配置文件,
文档处理模块
日志书写
原始子块,txt
sparse vector
parent content
source
timestamp
检索精准。
分块检索,
父块
子块
子块的文档切分器
父类的文档切分器
基于父块,切
文档的处理模块
创建并加载集合
转换成向量并存储
trainer.train()
model
args
帮助简化训练流程。
处理数据(※)
帮助跟随节奏:
敲注释,敲print信息。
1 | 检查模型路径是否存在 |
上午回顾
realize rag_prompt method
provide a context
let model answer the question based on context
normally, input with json format
defined sayed question
retrievel context with query
target :
coplicate into simple
simplize
there is prompt template class in langchain pack
write queryclassifier
normal common
or professional query
made up by LLM
giving a prompt mudule
splite 5000 into serveral batch
warning:farmat warong
at leaset
simplize script
load_model加载模型
保存模型
create dataset类
实例化对象
1 | 数据划分 |
知识串讲
1 | 流程图:意图识别;通用知识则大模型直接回答。是专业知识,则调用rag qa系统。 |
Author: 甘虎文
Copyright Notice: All articles on this blog are licensed under CC BY-NC-SA 4.0 unless otherwise stated.
Related Articles
2025-01-07
RAG流程
RAG流程:mysql储存FQA高频问答对数据 问题检索:BM25 连接数据库 添加表(带着字段) 添加数据 json.dumps() mysql 存储自己的网址和密码。(自己设计一个RAG系统) 声明回退问题,把原来的复杂查询简化,第一个query检索 进行改写。主题含义不变。 milvus可以处理的数据集的大小限制是多少 技术实现: 增强索引:设计目标、核心功能、技术实现 多粒度切块,把块-分子块,对应的父块,提供给LLM 文档切成一块,存储milvus中的文档, query是为题,编程向量, 太长的拆成四个 128个向量 父块是一个 子块分成子块去做检索 切块的子块数都是超参数 混合检索:BM25,向量检索,字符检索 base:基础模块,配置、日志 core:核心逻辑模块,实现RAG的关键功能 main:系统运行入口,支持数据处理和交互查询 中午将一份唯二 通用知识由大语言模型回答, 直接 hyde 子查询 会输 文档检索:支持抽向量和系数向量的混合检索, 中午,下午 语义关键字,倒排(关键字检索 两句话的相似性, 混合检索,重排序优化, 作为回答送给大模型,方便理解。 用...
2025-01-04
RAG-Langchain
RAG-LangchainRAG解决什么问题: 信息过时:网络检索,获取最新数据 领域知识缺失:微调,将专有和私有的知识放到知识库里 幻觉:RAG(retrieval augmented generate),减轻幻觉,基于相关文档进行生成, 安全:RAG,无需将数据送到公开大模型中训练,放到本地知识库,使用本地的模型(api会泄露)进行调用,避免数据的公开和泄露。2)私有数据时存在本地知识库的,做一个权限的管控。 RAG定义:检索技术+生成(LLM提示) 处理流程:构建索引(文件加载、内容读取、chunk构建(拆成小文件,小块)、向量化(小块文档向量化)、落向量化 检索:query向量化,找到topk 生成:topk+query构建prompt;llm生成。 开发框架:LLaMAIndex、Langchain(快速搭建大模型) Langchainlangchain将模型分为三种( langchian是用于构建大模型应用程序的框架,帮助开发者更高效的组合和使用多语言的工具。 原始大模型:LLM、chat models、embeddings chain:组装chain:chain...
2025-03-07
RAG项目在windows系统下的环境安装流程
RAG项目环境安装流程1 python虚拟环境 依赖文件 (requirements.txt) 自己创建requirements.txt文件, 将以下内容复制进去即可 123456789101112131415161718192021222324252627282930313233# Web框架fastapiuvicorn[standard]websockets# 数据库连接pymysqlredis# 向量检索rank_bm25scikit-learnnumpyjiebapandastransformerstorchlangchainlangchain_communitysentence_transformerspymilvus# AI模型openai# 配置和工具configparserlocustwebsocket-client# 其他依赖pydanticstarlette 打开cmd终端(win+r)输入以下命令 123456# 创建虚拟环境, 安装3.10及以上的python解析器conda create -n EduRAG python=3.10# 切换虚...
2025-04-05
RAG项目梳理
目前代码用到的包pymilvus、logging 模块一、听课笔记项目背景能解决大模型幻觉、过时、安全、专业知识的弊端的解决方法就是:RAG+微调。RAG和微调本质上都是为了,让大模型更好地基于企业私有知识来回答问题,RAG提供外部知识库,提供数据来源。微调基于知识库,告诉大模型怎么生成答案。例如提示词微调Prompt 微调。基于企业私有知识的垂直领域微调:拿企业的知识做微调训练比如PEFT中lora拿少量数据集,去给大模型做一个微调。基于企业私有知识的RAG问答系统:给企业的私有知识创建一个数据库,让大模型去做意图识别,从而进行专有领域的一个问答。微调的弊端:需要微调人才+需要显卡资源 通用模型和垂直领域模型的区别:能做所有任务,通晓所有领域常识的模型就是通用型或者说通用领域的大模型,专精于某个领域(e.g.法律)的就是垂直领域大模型。 项目流程不进入RAG:用户输入query,先经过mysql检索阈值>=0.85的高频回答对。存在直接返回,无需进入RAG流程。 进入RAG:找到本地文档–文档切分,切分的文档做embedding,存入milvus。 query也...
2025-04-21
milvus索引算法-IVF-PQ的原理解释
给我解释一下milvus数据库索引方法的IVF-PQ的原理 好的,我们来详细解释一下 Milvus 中 IVF-PQ 索引的原理。我会用循序渐进的方式,从核心概念到整体工作流程来讲解。 核心思想:先粗筛,再细算IVF-PQ 不是一个单一的算法,而是两个经典技术的结合: IVF - 倒排文件:用于“粗筛”,快速缩小搜索范围。 PQ - 乘积量化:用于“细算”,在缩小后的范围内高效且近似地计算距离。 把它们组合起来,IVF-PQ 的工作方式就像图书馆找书: IVF:先根据书的类别(比如“计算机科学”、“文学”),找到可能存放目标书籍的几个书架(粗筛)。 PQ:然后在这几个书架上,不是一本一本地仔细看书名,而是通过书脊的颜色、厚度等特征快速排除大部分无关的书,最后只对剩下的几本进行精确比对(细算)。 这样避免了在整个图书馆(全库)进行地毯式搜索,极大地提升了效率。 1. IVF - 倒排文件目标: 将整个向量空间分割成 nlist 个小单元,缩小搜索范围。 工作原理: 聚类:在构建索引时,使用 K-Means 等聚类算法对所有原始向量进行训练,得到 nlist 个聚类中心(...