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

Day24:向量数据库 Chroma_FAISS 入门

Day24:向量数据库 Chroma/FAISS 入门

引言:

上期咱们搞定了 Embedding 向量化,把文字变成了机器能懂的数字向量。但很多同学把向量生成后就 “乱扔”,导致检索慢、找不到、甚至丢失! 今天咱们就给向量找个“智能豪宅”—— 向量数据库!Chroma 新手友好,FAISS 性能炸裂,保姆级教程 + 完整代码,看完直接写进简历!

🎯 今日核心任务(人话翻译)

  1. 搞懂向量数据库:为什么不用 Excel 存向量?它到底牛在哪?

  2. Chroma 入门实战:创建数据库→插入向量→智能检索,新手零压力

  3. FAISS 初体验:感受一下什么叫 “闪电般的检索速度”

  4. 双版本代码:通义千问在线版,直接复制就能跑

🧠 一、向量数据库:大白话秒懂(拒绝晦涩)

❌ 劝退式定义(别看)

向量数据库是专门用于存储、索引、查询高维稠密向量的数据库系统,通过近似最近邻搜索(ANN)实现毫秒级检索…

✅ 人话版讲解(醍醐灌顶)

把向量数据库当成 “智能图书馆管理员”

  • 普通数据库(MySQL/Excel):只会按 “书名” 找书,你问 “讲 LPR 利率的书在哪”,它直接懵圈

  • 向量数据库:不仅存书,还懂每本书的 “内容语义”,你问 “讲 LPR 的书”,它一秒给你找出最相关的 3 本!

核心优势

  1. 毫秒级检索:百万级向量库,0.1 秒出结果

  2. 语义匹配:不是找关键词,是找 “意思最像” 的内容

  3. 自动索引:不用你手动建索引,它自动帮你优化

🛠️ 二、环境一键安装(复制即跑)

打开终端,执行命令:

# 核心依赖:Chroma轻量向量库 + FAISS高性能向量库 + 通义千问pipinstalllangchain langchain-community chromadb faiss-cpu dashscope sentence-transformers-ihttps://pypi.tuna.tsinghua.edu.cn/simple/
  • chromadb:新手首选,轻量易上手

  • faiss-cpu:Facebook 开源,性能炸裂(有 N 卡可装faiss-gpu

💻 三、实战一:Chroma 入门保姆级(新手闭眼冲)

Chroma 是 LangChain 官方推荐的新手向量库,零配置、开箱即用,适合学习和小规模项目。

完整代码(通义千问版)
#!/usr/bin/env python3# -*- coding: utf-8 -*-# Day24:Chroma向量数据库入门实战(通义千问版)importosfromlangchain.text_splitterimportRecursiveCharacterTextSplitterfromlangchain_community.vectorstoresimportChromafromlangchain_community.embeddingsimportDashScopeEmbeddingsfromlangchain_community.document_loadersimportTextLoader# ===================== 核心配置 =====================os.environ["DASHSCOPE_API_KEY"]="sk-你的通义千问API Key"PERSIST_DIRECTORY="./chroma_library"# 向量库存储路径(智能图书馆)# ===================== 1. 准备“图书”(文档) =====================# 加载测试文档(替换成你的LPR公告/金融知识)loader=TextLoader("lpr_2026.txt",encoding="utf-8")docs=loader.load()# 智能分块(把厚书拆成薄册子)text_splitter=RecursiveCharacterTextSplitter(chunk_size=300,chunk_overlap=50,separators=["\n\n","\n","。","!","?"])split_docs=text_splitter.split_documents(docs)print(f"✅ 准备了{len(split_docs)}本“小书”")# ===================== 2. 初始化“智能图书馆”(Chroma) =====================print("🔧 正在建造智能图书馆...")embedding=DashScopeEmbeddings(model="text-embedding-v3")# 创建Chroma向量库,自动持久化到本地vector_db=Chroma.from_documents(documents=split_docs,embedding=embedding,persist_directory=PERSIST_DIRECTORY)vector_db.persist()print("🎉 智能图书馆建造完成!向量已入库")# ===================== 3. 智能检索(找书) =====================print("\n"+"="*60)user_question="2026年3月的1年期LPR是多少?"print(f"🤖 正在图书馆找书:{user_question}")# 相似度搜索:找出最相关的3个文本块results=vector_db.similarity_search(user_question,k=3)print("\n📚 找到最相关的3本“小书”:")fori,docinenumerate(results):print(f"\n--- 第{i+1}本 ---\n{doc.page_content}")print("="*60)

💻 四、实战二:FAISS 初体验(感受闪电速度)

FAISS 是 Facebook AI Research 开源的高性能向量库检索速度是 Chroma 的 5-10 倍,适合百万级以上向量库。

完整代码(通义千问版)
#!/usr/bin/env python3# -*- coding: utf-8 -*-# Day24:FAISS向量数据库初体验(通义千问版)importosfromlangchain.text_splitterimportRecursiveCharacterTextSplitterfromlangchain_community.vectorstoresimportFAISSfromlangchain_community.embeddingsimportDashScopeEmbeddingsfromlangchain_community.document_loadersimportTextLoader# ===================== 核心配置 =====================os.environ["DASHSCOPE_API_KEY"]="sk-你的通义千问API Key"FAISS_SAVE_PATH="./faiss_index"# ===================== 1. 文档加载+分块 =====================docs=TextLoader("lpr_2026.txt",encoding="utf-8").load()text_splitter=RecursiveCharacterTextSplitter(chunk_size=300,chunk_overlap=50)split_docs=text_splitter.split_documents(docs)# ===================== 2. FAISS向量库构建 =====================print("⚡ 正在构建FAISS闪电向量库...")embedding=DashScopeEmbeddings(model="text-embedding-v3")vector_db=FAISS.from_documents(documents=split_docs,embedding=embedding)# 保存FAISS索引到本地vector_db.save_local(FAISS_SAVE_PATH)print("🎉 FAISS闪电库构建完成!")# ===================== 3. 闪电检索 =====================user_question="2026年3月的5年期LPR是多少?"print(f"\n⚡ 闪电检索中:{user_question}")results=vector_db.similarity_search(user_question,k=2)print("\n📚 闪电找到结果:")fori,docinenumerate(results):print(f"\n--- 结果{i+1}---\n{doc.page_content}")

📊 五、Chroma vs FAISS:新手怎么选?

维度ChromaFAISS
上手难度⭐ 超级简单,零配置⭐⭐⭐ 需要了解索引
检索速度⭐⭐ 适合万级向量⭐⭐⭐⭐⭐ 百万级毫秒级
持久化✅ 原生支持,自动保存⚠️ 需手动保存索引
适用场景学习、小规模项目、原型验证生产环境、大规模向量库

⚠️ 六、新手避坑指南

  1. 路径问题persist_directory必须是文件夹,不是文件

  2. Embedding 混用:建库和检索必须用同一个 Embedding 模型

  3. FAISS 保存:FAISS 索引必须手动save_local,否则重启就没了

  4. 分块不合理:别把句子砍断,坚持用递归分块

🎯 今日总结

今天咱们给向量安了家!

  • 学会了 Chroma:新手友好,零配置入门

  • 体验了 FAISS:性能炸裂,感受闪电速度

  • 完成了向量入库 + 智能检索,RAG 全链路打通!

http://www.jsqmd.com/news/536208/

相关文章:

  • OpenClaw+GLM-4.7-Flash:自动化内容创作全流程
  • 五肽-48——由精氨酸、谷氨酸、亮氨酸、丝氨酸和苏氨酸的抗衰肽
  • 半桥LLC谐振变换器:开环、闭环及闭环+软启动Simulink仿真设计与配套说明文档详解
  • 力扣链表高频题:两两交换节点 + K个一组翻转链表(保姆级思路+满分代码)
  • OpenClaw技能扩展实战:基于百川2-13B-4bits的Markdown周报自动生成
  • 关于Shader学习路上的心得
  • 如何在openKylin下将vsftpd配置成可以让匿名用户访问(v0.2.0)
  • IIC总线
  • 零基础玩转OpenClaw:Qwen3.5-4B-Claude镜像云端体验指南
  • 闲置空间变增收宝地!全自动泡面机免费投放 全国都可以测位置
  • 如何在开放麒麟(openKylin)下安装FTP服务器(v0.2.0)
  • 什么牌子的大路灯护眼好?公认口碑最好的大路灯推荐排行榜前十名
  • 【华为OD机试真题】战场索敌 · 区域统计问题 (Python /JS)
  • 量子赌场黑客:修改概率云薅走十亿
  • 安装 Redis 为系统服务
  • DeerFlow企业级AI研究框架:3种集成模式与扩展架构设计
  • 如何在5分钟内快速部署开源项目:Ultralytics YOLO零基础配置指南
  • PLECS 4.7:虚拟同步机控制三相逆变仿真及报告
  • 密封圈源头厂家提供O型圈定制及国产替代服务:导向带/工程机械密封圈/弹簧蓄能密封圈/旋转密封圈/橡胶密封圈/泛塞封/选择指南 - 优质品牌商家
  • 从0基础到高薪入职:2026大专财富管理专业“三步走”职业规划图
  • 5个开源教育革新角度:释放3D创作工具的教学价值
  • 协议不通?一“网”打尽!PROFINET转MODBUS TCP网关,赋能步科伺服精准协同
  • Conda环境下的WebRTC编译与部署:从源码下载到实战避坑指南
  • WPI Romi 32U4机器人库:嵌入式教育级硬件抽象与PID控制实践
  • Popcorn Time:高效实用的开源跨平台媒体播放解决方案
  • 效率向|小成本做大项目,VP+三易串口屏是秘密武器
  • MATLAB高斯背景建模与目标提取(人体检测)
  • 透明显示屏技术应用:汽车挡风玻璃可直接显示导航信息
  • OpenClaw资源监控:RTX4090D运行Qwen3-32B镜像的优化基线
  • ActivityWatch全面指南:从部署到高级配置的实战技巧