Day24:向量数据库 Chroma_FAISS 入门
Day24向量数据库 Chroma/FAISS 入门引言上期咱们搞定了 Embedding 向量化把文字变成了机器能懂的数字向量。但很多同学把向量生成后就 “乱扔”导致检索慢、找不到、甚至丢失 今天咱们就给向量找个“智能豪宅”—— 向量数据库Chroma 新手友好FAISS 性能炸裂保姆级教程 完整代码看完直接写进简历 今日核心任务人话翻译搞懂向量数据库为什么不用 Excel 存向量它到底牛在哪Chroma 入门实战创建数据库→插入向量→智能检索新手零压力FAISS 初体验感受一下什么叫 “闪电般的检索速度”双版本代码通义千问在线版直接复制就能跑 一、向量数据库大白话秒懂拒绝晦涩❌ 劝退式定义别看向量数据库是专门用于存储、索引、查询高维稠密向量的数据库系统通过近似最近邻搜索ANN实现毫秒级检索…✅ 人话版讲解醍醐灌顶把向量数据库当成 “智能图书馆管理员”普通数据库MySQL/Excel只会按 “书名” 找书你问 “讲 LPR 利率的书在哪”它直接懵圈向量数据库不仅存书还懂每本书的 “内容语义”你问 “讲 LPR 的书”它一秒给你找出最相关的 3 本核心优势毫秒级检索百万级向量库0.1 秒出结果语义匹配不是找关键词是找 “意思最像” 的内容自动索引不用你手动建索引它自动帮你优化️ 二、环境一键安装复制即跑打开终端执行命令# 核心依赖Chroma轻量向量库 FAISS高性能向量库 通义千问pipinstalllangchain langchain-community chromadb faiss-cpu dashscope sentence-transformers-ihttps://pypi.tuna.tsinghua.edu.cn/simple/chromadb新手首选轻量易上手faiss-cpuFacebook 开源性能炸裂有 N 卡可装faiss-gpu 三、实战一Chroma 入门保姆级新手闭眼冲Chroma 是 LangChain 官方推荐的新手向量库零配置、开箱即用适合学习和小规模项目。完整代码通义千问版#!/usr/bin/env python3# -*- coding: utf-8 -*-# Day24Chroma向量数据库入门实战通义千问版importosfromlangchain.text_splitterimportRecursiveCharacterTextSplitterfromlangchain_community.vectorstoresimportChromafromlangchain_community.embeddingsimportDashScopeEmbeddingsfromlangchain_community.document_loadersimportTextLoader# 核心配置 os.environ[DASHSCOPE_API_KEY]sk-你的通义千问API KeyPERSIST_DIRECTORY./chroma_library# 向量库存储路径智能图书馆# 1. 准备“图书”文档 # 加载测试文档替换成你的LPR公告/金融知识loaderTextLoader(lpr_2026.txt,encodingutf-8)docsloader.load()# 智能分块把厚书拆成薄册子text_splitterRecursiveCharacterTextSplitter(chunk_size300,chunk_overlap50,separators[\n\n,\n,。,,])split_docstext_splitter.split_documents(docs)print(f✅ 准备了{len(split_docs)}本“小书”)# 2. 初始化“智能图书馆”Chroma print( 正在建造智能图书馆...)embeddingDashScopeEmbeddings(modeltext-embedding-v3)# 创建Chroma向量库自动持久化到本地vector_dbChroma.from_documents(documentssplit_docs,embeddingembedding,persist_directoryPERSIST_DIRECTORY)vector_db.persist()print( 智能图书馆建造完成向量已入库)# 3. 智能检索找书 print(\n*60)user_question2026年3月的1年期LPR是多少print(f 正在图书馆找书{user_question})# 相似度搜索找出最相关的3个文本块resultsvector_db.similarity_search(user_question,k3)print(\n 找到最相关的3本“小书”)fori,docinenumerate(results):print(f\n--- 第{i1}本 ---\n{doc.page_content})print(*60) 四、实战二FAISS 初体验感受闪电速度FAISS 是 Facebook AI Research 开源的高性能向量库检索速度是 Chroma 的 5-10 倍适合百万级以上向量库。完整代码通义千问版#!/usr/bin/env python3# -*- coding: utf-8 -*-# Day24FAISS向量数据库初体验通义千问版importosfromlangchain.text_splitterimportRecursiveCharacterTextSplitterfromlangchain_community.vectorstoresimportFAISSfromlangchain_community.embeddingsimportDashScopeEmbeddingsfromlangchain_community.document_loadersimportTextLoader# 核心配置 os.environ[DASHSCOPE_API_KEY]sk-你的通义千问API KeyFAISS_SAVE_PATH./faiss_index# 1. 文档加载分块 docsTextLoader(lpr_2026.txt,encodingutf-8).load()text_splitterRecursiveCharacterTextSplitter(chunk_size300,chunk_overlap50)split_docstext_splitter.split_documents(docs)# 2. FAISS向量库构建 print(⚡ 正在构建FAISS闪电向量库...)embeddingDashScopeEmbeddings(modeltext-embedding-v3)vector_dbFAISS.from_documents(documentssplit_docs,embeddingembedding)# 保存FAISS索引到本地vector_db.save_local(FAISS_SAVE_PATH)print( FAISS闪电库构建完成)# 3. 闪电检索 user_question2026年3月的5年期LPR是多少print(f\n⚡ 闪电检索中{user_question})resultsvector_db.similarity_search(user_question,k2)print(\n 闪电找到结果)fori,docinenumerate(results):print(f\n--- 结果{i1}---\n{doc.page_content}) 五、Chroma vs FAISS新手怎么选维度ChromaFAISS上手难度⭐ 超级简单零配置⭐⭐⭐ 需要了解索引检索速度⭐⭐ 适合万级向量⭐⭐⭐⭐⭐ 百万级毫秒级持久化✅ 原生支持自动保存⚠️ 需手动保存索引适用场景学习、小规模项目、原型验证生产环境、大规模向量库⚠️ 六、新手避坑指南路径问题persist_directory必须是文件夹不是文件Embedding 混用建库和检索必须用同一个 Embedding 模型FAISS 保存FAISS 索引必须手动save_local否则重启就没了分块不合理别把句子砍断坚持用递归分块 今日总结今天咱们给向量安了家学会了 Chroma新手友好零配置入门体验了 FAISS性能炸裂感受闪电速度完成了向量入库 智能检索RAG 全链路打通