RAG 实战|向量数据库检索原理 + Chroma 实战全攻略
一、为什么 RAG 离不开向量数据库RAGLLM 外部知识库核心流程索引→检索→增强生成。索引文档分块→向量化→存储向量检索用户问题向量化→向量库相似度匹配→返回 Top-K 相关块生成用检索内容增强 Prompt→LLM 输出答案向量数据库解决两大痛点高效存储海量高维向量毫秒级向量相似度检索支撑 RAG 实时响应二、向量与 Embedding 基础1. 什么是向量Embedding把文本 / 图像转为固定长度高维数值数组语义相近的文本向量距离更近。例长沙→ [0.8, -0.3, 0.5, ..., 0.5]2. 向量模型嵌入模型在线通义文本向量 v4、OpenAI Embedding本地BGE-M3多语言、长文本 8192token、Ollama 一键部署部署命令ollama pull bge-m33. 三大相似度计算方法表格方法原理适用场景余弦相似度向量夹角余弦文本语义检索最常用欧氏距离 L2空间直线距离归一化后效果好点积向量内积已归一化向量三、向量数据库全景选型与对比1. 核心定义专门存储、索引、查询向量嵌入支持近似最近邻 ANN 搜索比传统库快百倍。2. 主流库对比RAG 开发必看表格数据库特点适用场景开源Chroma轻量、易集成、LangChain 友好中小项目、快速开发是Milvus分布式、十亿级向量、毫秒级企业大规模是Pinecone全托管、去重 / 排名云上 SaaS否FaissMeta 出品、高效检索图像 / 推荐是四、Chroma 实战RAG 开发标配步骤1. 环境准备bash运行pip install chromadb # 课程配套requirements.txt一键安装2. 核心 API背会直接用1创建客户端python运行import chromadb # 持久化客户端数据落地 client chromadb.PersistentClient(path./chroma_db)2集合 Collection 操作列出client.list_collections()创建client.create_collection(namerag_kc)有则获取、无则创建client.get_or_create_collection(namerag_kc)删除client.delete_collection(namerag_kc)3添加文档索引入库python运行collection.add( documents[RAG是检索增强生成, 向量库存Embedding], embeddings[[0.1,...], [0.2,...]], # 必传 ids[doc1, doc2] # 唯一ID必传 )4相似度检索核心python运行results collection.query( query_embeddings[0.1, 0.2, ...], # 问题向量 n_results5 # Top-K ) # 返回ids、distances、documents五、RAG 检索全流程面试高频文档分块按字符 / 句子 / 递归切分加重叠窗口防上下文断裂向量化嵌入模型转句向量入库存入向量库建索引查询向量化用户问题转向量检索相似度计算→Top-K增强生成拼接 Prompt→LLM 回答六、复习要点速记RAG 用向量库解决大模型时效差、知识不全、幻觉相似度余弦相似度优先用于文本检索开发首选Chroma轻量易上手课程实战标配检索流程分块→Embedding→入库→查询向量→召回→生成本地向量模型Ollama BGE-M3离线可用