Thanks to visit codestin.com
Credit goes to github.com

Skip to content

JustGopher/RAG-demo

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

RAG-demo

一、简介

使用 Redis 的向量检索与 LLM 构建一个 RAG 知识库,每次尝试从 Redis 向量索引中获取 top k 条相关信息,并使用 LLM 进行总结回复;当没有相关知识,则提示未查找到文档,限制大模型自由发挥。

技术栈

  • 开发语言:go1.22
  • 工作流框架:Eino(字节开源的大模型工作流开发框架)
  • 向量存储与检索:Redis
  • 大语言模型:doubao-pro-32k-241215
  • 向量化模型:doubao-embedding-large-text-240915

二、系统架构

image.png

三、核心业务流程

1. 索引构建阶段

代码:RAG-demo/eino/knowledgeindexing

索引的构建阶段,本质也是一个工作流,因此可以通过 Goland 的 Eino Dev 插件进行可视化绘制,完成之后点击生成流程框架代码,之后填充一些业务实现即可:

image-20250730213219091

  • 文件加载:从文件系统读取Markdown文档
  • 文档分割:按标题、段落等逻辑单位将文档分割成小段(根据 # 拆分)
  • 向量生成:使用嵌入模型,将文本转换为高维向量(4096)
  • Redis存储:将文档内容、元数据和向量存储到Redis哈希结构中

2. 检索阶段

代码:RAG-demo/eino/rag/retriver.go

  • 用户输入:用户在终端输入问题
  • 查询向量化:使用同样的嵌入模型将问题转换为向量
  • KNN搜索:在Redis中执行KNN(K近邻)向量搜索
  • 相关文档获取:获取与问题语义最相关的TopK个文档

3. 回答生成阶段

代码:RAG-demo/eino/rag/generator.go

  • 提示构建:将检索到的文档和用户问题组合成增强提示
  • LLM调用:将增强提示发送给大语言模型(ARK doubao)
  • 回答生成:模型根据提供的上下文生成针对用户问题的回答

4. 主循环

代码:RAG-demo/eino/rag/cmd/main.go

初始化资源并不断接受用户输入,调用各项工作处理后进行输出

About

RAG

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors