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

【震惊】CPU也能玩转大模型!Redis+QwenEmbedding构建知识库检索系统全记录

1. 项目背景与边界

这是一个基于个人兴趣编写的“小而全”的知识库检索实验项目:

  • 资源前提:两台8C16G Linux主机、无GPU。
  • 目标取舍:优先把“可用的检索层”跑通(向量化 → Redis 存储 → 混合检索 → TopK 结果),再考虑接入生成模型形成完整RAG。
  • 模型选择:使用Qwen/Qwen3-Embedding-0.6B做文本向量化(Embedding),轻量且适合 CPU。
  • 语料选择:缺少业务语料,因此选用公开诗词语料做尝试(以唐诗为例)。

注意:本项目当前侧重点是“检索与工程化落地”,并不包含一个完整的LLM生成式对话系统;目前提供的是交互式检索服务(返回TopK诗句/段落)。


2. 总体链路

系统分为离线构建与在线查询两条主链路:


3. 关键模块与职责

3.1 向量化(Embedding)

  • 模型:Qwen/Qwen3-Embedding-0.6B;
  • 向量维度:1024(该模型输出维度为1024);
  • 查询指令:默认使用query:作为查询侧前缀(仅对查询拼接),用于提升检索效果;
  • CPU优化:线程数num_threads: 8+ 小批次batch_size: 2控制峰值内存.

实现形态:一个独立的“向量化模块”(负责加载模型、批量推理、输出 float32 向量)。

3.1.1 语料清洗与切分策略(面向诗词的取舍)

  • 为什么不分 chunk:唐诗篇幅普遍较短(整首诗通常远小于max_length=512),本项目默认不做分chunk,直接以“整首诗”为最小索引单元送入模型向量化。
  • 可选的分句/切片:预处理模块保留split_sentences开关;后续如果需要更高命中密度(例如“按句召回”),再启用分句/切片即可。
  • 清洗原则:写入前做轻量规范化(例如去除多余空白/换行),减少“同一内容因格式差异导致重复入库”,并降低 Redis 判重/过滤的隐性成本。

3.2 Redis 向量库与全文检索(关键词检索 + 向量召回)

  • 依赖能力:本项目使用FT.SEARCH/ 向量 KNN /WITHSCORES等能力。
  • Redis 8(本项目使用 8.4.0)环境下,这些查询与索引能力由 Redis 内置的查询/检索引擎直接提供;
  • 若使用较老版本 Redis,则通常需要额外安装 Redis Stack / RediSearch 模块才能获得FT.*与向量索引能力。
  • 索引:HNSW(可在配置文件中调参,如mef_construction
  • 数据结构(与代码实现对齐):使用Redis Hash存储,每条文档 key 以doc:为前缀;字段包含:
  • text:TEXT 字段,用于全文检索与关键词过滤
  • vector:VECTOR 字段,存储 float32 向量的 bytes,用于 KNN
  • metadata:TEXT 字段,存储 JSON 字符串(来源/作者/标题/朝代等可扩展)
  • 能力边界(与当前实现对齐):本项目的 embedding 在应用侧完成;Redis 侧专注于索引 + 召回 + 混合检索FT.SEARCH做关键词/全文检索,KNN做向量召回)。后续如果要进一步降低网络开销,可再考虑把embedding/重排做成独立服务或下沉到数据侧。
  • 客户端选择redis-py可以直接调用FT.SEARCH等命令;但在“建索引、写入、向量查询”这些高频工程动作上,本项目使用redisvl(Redis Vector Library)更省心,便于后续扩展到更复杂的检索链路。

实现形态:一个“向量存储与检索模块”(负责建索引、写入、KNN/混合检索与重排)。

3.3 服务编排(知识库搭建框架)

交互式检索服务的初始化流程基本等价于“一键搭建知识库”:

  1. 初始化向量化器(加载模型、设置线程、配置镜像)。
  2. 加载语料(纯文本语料文件)。
  3. 语料清洗与展平(当前对唐诗默认split_sentences=False,即整首诗作为一条文档;同时做轻量清洗以便判重与检索)。
  4. 连接 Redis + 创建索引(Hash + TEXT/VECTOR 字段)。
  5. 去重(批量检查文本是否已存在,避免重复向量化/写入)。
  6. 向量化新增文本,并“边向量化边写入 Redis”(降低内存、缩短总耗时)。
  7. 进入交互式查询。

4. 检索策略:混合召回 + 重排序

在线查询使用“向量检索 + 关键词过滤/打分”的混合方案:

  • Redis 查询形态(核心思想):
  • 有文本查询时:(@text:xxx)=>[KNN N @vector $vec AS vector_score]+WITHSCORES
  • 无文本查询或无命中时:回退*=>[KNN K ...]
  • 文本分数:RedisWITHSCORES返回的全文相关度(常见为 BM25 族分数)
  • 向量分数:当前实现为COSINE 距离(距离越小越相似),并转换为相似度

余弦距离dist ∈ [0, 2],相似度sim = 1 - dist可能为负,因此使用max(0, 1 - dist)确保非负。

重排序(当前实现做了归一化,避免“距离/分数量纲不同”导致权重失效):

默认权重:w_v=0.7w_t=0.3直觉数值,无理论依据)。


⚙️ 5. 资源受限下的性能与稳定性注意事项

5.1 CPU推理与内存控制

  • 小批次向量化:batch_size=2(更稳,适合8C16G);
  • 限制token长度:max_length=512(诗词通常短,足够且节省内存);
  • 使用float32向量:降低Redis存储体积与网络传输开销;
  • Intel平台加速(可选):可尝试intel-extension-for-pytorch(例如 2.8.0)以提升CPU上的Transformer推理效率(依赖oneDNN/MKL等加速路径),在无GPU场景对Qwen3-Embedding-0.6B这类模型通常有收益。

5.2 Redis 侧优化

  • 连接池:max_connections=10,减少连接建立开销
  • HNSW 参数:mef_construction影响召回/速度/内存,需要根据数据规模调参
  • 混合查询候选集扩大:实现中用top_k * 3先取候选,再做混合重排,提升最终 TopK 质量

5.3 工程化细节(减少“隐性成本”)

  • 去重:推荐使用文本内容的MD5/SHA256哈希值作为Redis Key的一部分(如doc:{hash}),实现高效判重。当前为调试方便暂用FT.SEARCH文本匹配方案;
  • 查询转义:对-(){}[]^"~*?:\\等特殊字符做清理,避免语料处理出错并减少错误信息干扰;
  • 回退策略:文本过滤无匹配时回退纯向量KNN,保证“总能返回结果”。

🧭 6. 知识查询流程(一步到位版)

  1. 用户输入查询(关键词/短句)。
  2. 检索服务清洗query(规范化、去掉潜在非法字符)。
  3. 向量化模块对query instruction做embedding(拼接query:前缀)。
  4. Redis检索模块发起混合检索(KNN + TEXT + WITHSCORES)。
  5. 对候选结果进行归一化混合打分并排序。
  6. 返回TopK给用户(当前为CLI展示;后续可把TopK作为RAG上下文喂给诸如Rerank模型)。

学AI大模型的正确顺序,千万不要搞错了

🤔2026年AI风口已来!各行各业的AI渗透肉眼可见,超多公司要么转型做AI相关产品,要么高薪挖AI技术人才,机遇直接摆在眼前!

有往AI方向发展,或者本身有后端编程基础的朋友,直接冲AI大模型应用开发转岗超合适!

就算暂时不打算转岗,了解大模型、RAG、Prompt、Agent这些热门概念,能上手做简单项目,也绝对是求职加分王🔋

📝给大家整理了超全最新的AI大模型应用开发学习清单和资料,手把手帮你快速入门!👇👇

学习路线:

✅大模型基础认知—大模型核心原理、发展历程、主流模型(GPT、文心一言等)特点解析
✅核心技术模块—RAG检索增强生成、Prompt工程实战、Agent智能体开发逻辑
✅开发基础能力—Python进阶、API接口调用、大模型开发框架(LangChain等)实操
✅应用场景开发—智能问答系统、企业知识库、AIGC内容生成工具、行业定制化大模型应用
✅项目落地流程—需求拆解、技术选型、模型调优、测试上线、运维迭代
✅面试求职冲刺—岗位JD解析、简历AI项目包装、高频面试题汇总、模拟面经

以上6大模块,看似清晰好上手,实则每个部分都有扎实的核心内容需要吃透!

我把大模型的学习全流程已经整理📚好了!抓住AI时代风口,轻松解锁职业新可能,希望大家都能把握机遇,实现薪资/职业跃迁~

这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

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

相关文章:

  • 2026安平钢格板哪家好?插接钢格板厂家与钢格板生产厂家全解析
  • 2026河北钢格板怎么选?河北钢格板哪家好?不锈钢钢格板源头厂家:钢格板厂家推荐
  • 2026钢格栅板哪家好?钢格栅哪家好?钢格栅板厂家推荐:优质钢格栅板生产厂家一览
  • 电影解说工具踩坑实录:花了冤枉钱的5个教训(附避坑指南)
  • 2026年口碑好的高端智能收纳/环保智能收纳高分好评排行榜
  • 电影解说矩阵号怎么做?批量生产工具和流程揭秘(2026实操版)
  • 基于SpringBoot+Vue的医疗报销系统管理系统设计与实现【Java+MySQL+MyBatis完整源码】
  • 【毕业设计】SpringBoot+Vue+MySQL web大学生一体化服务平台平台源码+数据库+论文+部署文档
  • 前后端分离农商对接系统系统|SpringBoot+Vue+MyBatis+MySQL完整源码+部署教程
  • 2026年热门的升降拉篮值得买的厂家
  • 实习管理系统信息管理系统源码-SpringBoot后端+Vue前端+MySQL【可直接运行】
  • Java Web 物流管理系统系统源码-SpringBoot2+Vue3+MyBatis-Plus+MySQL8.0【含文档】
  • 在大厂内部广泛传播的内容,谨慎传播 ~
  • 人工智能之数字生命-关于学习的讨论
  • react的hooks优缺点、底层实现及hooks参数
  • 打印机脱机终极自救指南:2026年实测7种修复方案(含AI修复黑科技)
  • 音频太长怎么办?分段处理5分钟以上录音的小技巧
  • SSM疫情防疫背景下青年志愿者56iu0(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面
  • QWEN-AUDIO生产环境:24/7稳定运行+显存自回收部署方案
  • 2026年有名的甘肃高中升大专学历提升热销优选榜
  • 保姆级教程:基于GLM-4V-9B的智能客服系统搭建(支持多轮对话)
  • 天津商业空间设计:本地团队的美学落地方案 [特殊字符]
  • GLM-4v-9b图文生成教程:基于视觉理解的反向提示词工程与结果优化
  • 2026年热门的兰州自考学历提升/兰州大专成人学历提升高评分推荐榜
  • 【开源鸿蒙跨平台开发--KuiklyUI--03】KuiklyUI 入门实战:从零打造高性能跨平台 Todo 应用
  • Open-AutoGLM效果展示:AI自动关注抖音账号全过程
  • SiameseUIE中文信息抽取:法律文书关键实体识别案例分享
  • RexUniNLU新手教程:无需标注数据,10种NLP任务轻松上手
  • React 项目的启动方式
  • DeepSeek-R1-Qwen-1.5B实测:本地化智能客服搭建全流程解析