向量数据库入门一、核心概念1. Chroma 是什么2. RecursiveCharacterTextSplitter 是什么3. 向量存储与检索二、完整入门代码第一步安装依赖第二步完整代码三、解释1. 文本分块 RecursiveCharacterTextSplitter2. Chroma 向量库3. 向量检索最关键四、运行结果五、升级使用真实中文向量模型六、总结一、核心概念1. Chroma 是什么轻量级、本地、免费、无需配置服务器的向量数据库专门用于RAG 入门学习数据存在你电脑文件夹里chroma_db功能存文本、生成向量、按语义搜索2. RecursiveCharacterTextSplitter 是什么LangChain 最标准、最常用的文本分块工具把长文章 → 小段文本chunk按换行 → 句号 → 逗号 → 空格递归切割不会硬切句子保留语义完整性3. 向量存储与检索存储文本 → 生成向量 → 存入 Chroma检索用户问题 → 生成问题向量 → 匹配最相似的文本段这就是RAG 的核心原理二、完整入门代码第一步安装依赖pipinstalllangchain chromadb langchain-community第二步完整代码# # 1. 导入所有需要的工具# fromlangchain.text_splitterimportRecursiveCharacterTextSplitter# 文本分块fromlangchain.vectorstoresimportChroma# 本地向量库fromlangchain.embeddingsimportFakeEmbeddings# 向量生成演示用# # 2. 准备一段长文本知识库# long_text 人工智能是一门让机器模拟人类智能的技术。 大模型基于深度学习可以理解语言、生成内容、回答问题。 RAG 叫做检索增强生成用于让大模型准确引用外部知识减少幻觉。 向量数据库用于存储文本的向量表示实现快速语义检索。 Chroma 是轻量级本地向量库非常适合学习和小型项目。 LangChain 是开发 AI 应用最常用的框架可以连接模型、向量库、分块工具。 文本分块是 RAG 中非常关键的一步可以提高检索精度。 # # 3. 【核心】文本分块RecursiveCharacterTextSplitter# text_splitterRecursiveCharacterTextSplitter(chunk_size100,# 每一块最大长度chunk_overlap20,# 块之间重叠20字符防止语义断裂separators[\n,。,, ],# 按什么符号分割优先级从高到低length_functionlen# 用长度计算)# 执行分块chunkstext_splitter.split_text(long_text)# 查看分块结果print( 分块结果 )fori,cinenumerate(chunks):print(f块{i1}:{c})# # 4. 【核心】初始化 Chroma 向量库# embeddingsFakeEmbeddings(size1024)# 入门先用假向量跑通流程# 把分块后的文本存入 ChromadbChroma.from_texts(textschunks,embeddingembeddings,persist_directory./chroma_db# 本地保存路径)# 保存到磁盘db.persist()print(\n✅ 向量库存储完成数据保存在 chroma_db 文件夹)# # 5. 【核心】向量相似度检索# query什么是RAG# 用户问题print(f\n 用户问题{query})# 检索最相似的 2 条结果retrieved_docsdb.similarity_search(query,k2)# 输出结果print(\n 检索结果 )foridx,docinenumerate(retrieved_docs):print(f结果{idx1}:{doc.page_content})三、解释1. 文本分块 RecursiveCharacterTextSplitterchunk_size100# 每块最多100字符chunk_overlap20# 前后重叠20字符保证语义不断裂separators[\n,。,, ]# 优先按换行切 → 再按句号 → 再按逗号为什么要分块大模型一次读不完长文本检索需要小段内容才精准2. Chroma 向量库dbChroma.from_texts(textschunks,# 分块后的文本embeddingembeddings,# 向量模型persist_directory./chroma_db# 存在本地)运行后会自动生成文件夹chroma_db关闭程序数据不会丢失下次可直接加载使用3. 向量检索最关键db.similarity_search(query,k2)query用户问题k2返回最相似的2条内容按语义匹配不是关键词匹配四、运行结果 分块结果 块 1: 人工智能是一门让机器模拟人类智能的技术。 块 2: 大模型基于深度学习可以理解语言、生成内容、回答问题。 块 3: RAG 叫做检索增强生成用于让大模型准确引用外部知识减少幻觉。 块 4: 向量数据库用于存储文本的向量表示实现快速语义检索。 块 5: Chroma 是轻量级本地向量库非常适合学习和小型项目。 块 6: LangChain 是开发 AI 应用最常用的框架可以连接模型、向量库、分块工具。 块 7: 文本分块是 RAG 中非常关键的一步可以提高检索精度。 ✅ 向量库存储完成数据保存在 chroma_db 文件夹 用户问题什么是RAG 检索结果 结果 1: RAG 叫做检索增强生成用于让大模型准确引用外部知识减少幻觉。 结果 2: 文本分块是 RAG 中非常关键的一步可以提高检索精度。五、升级使用真实中文向量模型把 FakeEmbeddings 替换成真实模型fromlangchain.embeddingsimportHuggingFaceEmbeddings embeddingsHuggingFaceEmbeddings(model_nameBAAI/bge-small-zh# 中文最强小模型)六、总结1. 长文本 → 分块RecursiveCharacterTextSplitter 2. 分块 → 生成向量 → 存入 Chroma 3. 用户问题 → 向量检索 → 拿到最相关知识这就是RAG 的完整底层流程。
AI学习——向量数据库入门
发布时间:2026/5/26 13:12:20
向量数据库入门一、核心概念1. Chroma 是什么2. RecursiveCharacterTextSplitter 是什么3. 向量存储与检索二、完整入门代码第一步安装依赖第二步完整代码三、解释1. 文本分块 RecursiveCharacterTextSplitter2. Chroma 向量库3. 向量检索最关键四、运行结果五、升级使用真实中文向量模型六、总结一、核心概念1. Chroma 是什么轻量级、本地、免费、无需配置服务器的向量数据库专门用于RAG 入门学习数据存在你电脑文件夹里chroma_db功能存文本、生成向量、按语义搜索2. RecursiveCharacterTextSplitter 是什么LangChain 最标准、最常用的文本分块工具把长文章 → 小段文本chunk按换行 → 句号 → 逗号 → 空格递归切割不会硬切句子保留语义完整性3. 向量存储与检索存储文本 → 生成向量 → 存入 Chroma检索用户问题 → 生成问题向量 → 匹配最相似的文本段这就是RAG 的核心原理二、完整入门代码第一步安装依赖pipinstalllangchain chromadb langchain-community第二步完整代码# # 1. 导入所有需要的工具# fromlangchain.text_splitterimportRecursiveCharacterTextSplitter# 文本分块fromlangchain.vectorstoresimportChroma# 本地向量库fromlangchain.embeddingsimportFakeEmbeddings# 向量生成演示用# # 2. 准备一段长文本知识库# long_text 人工智能是一门让机器模拟人类智能的技术。 大模型基于深度学习可以理解语言、生成内容、回答问题。 RAG 叫做检索增强生成用于让大模型准确引用外部知识减少幻觉。 向量数据库用于存储文本的向量表示实现快速语义检索。 Chroma 是轻量级本地向量库非常适合学习和小型项目。 LangChain 是开发 AI 应用最常用的框架可以连接模型、向量库、分块工具。 文本分块是 RAG 中非常关键的一步可以提高检索精度。 # # 3. 【核心】文本分块RecursiveCharacterTextSplitter# text_splitterRecursiveCharacterTextSplitter(chunk_size100,# 每一块最大长度chunk_overlap20,# 块之间重叠20字符防止语义断裂separators[\n,。,, ],# 按什么符号分割优先级从高到低length_functionlen# 用长度计算)# 执行分块chunkstext_splitter.split_text(long_text)# 查看分块结果print( 分块结果 )fori,cinenumerate(chunks):print(f块{i1}:{c})# # 4. 【核心】初始化 Chroma 向量库# embeddingsFakeEmbeddings(size1024)# 入门先用假向量跑通流程# 把分块后的文本存入 ChromadbChroma.from_texts(textschunks,embeddingembeddings,persist_directory./chroma_db# 本地保存路径)# 保存到磁盘db.persist()print(\n✅ 向量库存储完成数据保存在 chroma_db 文件夹)# # 5. 【核心】向量相似度检索# query什么是RAG# 用户问题print(f\n 用户问题{query})# 检索最相似的 2 条结果retrieved_docsdb.similarity_search(query,k2)# 输出结果print(\n 检索结果 )foridx,docinenumerate(retrieved_docs):print(f结果{idx1}:{doc.page_content})三、解释1. 文本分块 RecursiveCharacterTextSplitterchunk_size100# 每块最多100字符chunk_overlap20# 前后重叠20字符保证语义不断裂separators[\n,。,, ]# 优先按换行切 → 再按句号 → 再按逗号为什么要分块大模型一次读不完长文本检索需要小段内容才精准2. Chroma 向量库dbChroma.from_texts(textschunks,# 分块后的文本embeddingembeddings,# 向量模型persist_directory./chroma_db# 存在本地)运行后会自动生成文件夹chroma_db关闭程序数据不会丢失下次可直接加载使用3. 向量检索最关键db.similarity_search(query,k2)query用户问题k2返回最相似的2条内容按语义匹配不是关键词匹配四、运行结果 分块结果 块 1: 人工智能是一门让机器模拟人类智能的技术。 块 2: 大模型基于深度学习可以理解语言、生成内容、回答问题。 块 3: RAG 叫做检索增强生成用于让大模型准确引用外部知识减少幻觉。 块 4: 向量数据库用于存储文本的向量表示实现快速语义检索。 块 5: Chroma 是轻量级本地向量库非常适合学习和小型项目。 块 6: LangChain 是开发 AI 应用最常用的框架可以连接模型、向量库、分块工具。 块 7: 文本分块是 RAG 中非常关键的一步可以提高检索精度。 ✅ 向量库存储完成数据保存在 chroma_db 文件夹 用户问题什么是RAG 检索结果 结果 1: RAG 叫做检索增强生成用于让大模型准确引用外部知识减少幻觉。 结果 2: 文本分块是 RAG 中非常关键的一步可以提高检索精度。五、升级使用真实中文向量模型把 FakeEmbeddings 替换成真实模型fromlangchain.embeddingsimportHuggingFaceEmbeddings embeddingsHuggingFaceEmbeddings(model_nameBAAI/bge-small-zh# 中文最强小模型)六、总结1. 长文本 → 分块RecursiveCharacterTextSplitter 2. 分块 → 生成向量 → 存入 Chroma 3. 用户问题 → 向量检索 → 拿到最相关知识这就是RAG 的完整底层流程。