茴香豆:搭建你的 RAG 智能助理——学习笔记

本文介绍了RAG的基本概念,特别是书生浦语团队的开源产品‘茴香豆’,它利用RAG技术提升群聊场景下的技术支持和自动化问答能力。文章概述了茴香豆的工作原理、优化方法以及在搭建RAG知识库的实战部分,展示了其免费开源、高效准确等特点。
部署运行你感兴趣的模型镜像

通过第三期课程《茴香豆:搭建你的 RAG 智能助理》的学习,对于RAG知识有一定了解、了解由书生浦语团队开发并开源的“茴香豆”产品。

视频地址:https://www.bilibili.com/video/BV1QA4m1F7t4/
文档地址:https://github.com/InternLM/Tutorial/blob/camp2/huixiangdou/readme.md

1、RAG 基础介绍

RAG(Retrieval Augmented Generation)是一种结合了检索(Retrieval)和生成(Generation)的技术,旨在通过利用外部知识库来增强大型语言模型(LLMs)的性能。它通过检索与用户输入相关的信息片段,并结合这些信息来生成更准确、更丰富的回答,但是也许会“胡说八道”。

简单介绍了RAG的工作原理,主要涉及向量数据库、检索、文本生成等。

介绍了RAG常见的优化方法

介绍RAG微调后,又简单了评估框架和基准测试


2、茴香豆产品简介

“茴香豆”是一个基于LLMS的领域知识助手,由书生浦语团队开发的开源大模型。
专为及时通信工具中的群聊场景优化的工作流,提供及时准确的技术支持和自动化问答服务。通过应用RAG技术,“茴香豆”能够理解和高效准确的回应与特定知识领域相关的复查查询。

“茴香豆”的核心特点主要有免费开源、高效准确、领域知识、部署成本低、安全性高、扩展性强等。

前端可以与微信、飞书等链接,支持多种文档格式知识库,后端可以接入多种成熟的其它LLM服务。


3、使用茴香豆搭建RAG知识库实战

待后续补充操作记录和截图。

您可能感兴趣的与本文相关的镜像

Qwen3-VL-30B

Qwen3-VL-30B

图文对话
Qwen3-VL

Qwen3-VL是迄今为止 Qwen 系列中最强大的视觉-语言模型,这一代在各个方面都进行了全面升级:更优秀的文本理解和生成、更深入的视觉感知和推理、扩展的上下文长度、增强的空间和视频动态理解能力,以及更强的代理交互能力

构建一个基于RAG(Retrieval-Augmented Generation)的应用是一个结合信息检索和生成模型的流程,能够显著提升模型对特定领域知识的响应能力。以下是构建第一个RAG应用的详细步骤: ### 1. 理解RAG的基本原理 RAG模型结合了检索器(Retriever)和生成器(Generator)。检索器负责从外部知识库中检索相关信息,生成器则利用这些信息生成最终的回答。这种架构允许模型在生成回答时引用最新的或特定领域的数据,而不是依赖于训练时的静态知识库[^1]。 ### 2. 准备环境 首先,确保你的开发环境支持Python,并安装必要的库。常见的库包括`transformers`、`faiss`(用于高效的相似性搜索)、`sentence-transformers`(用于生成句子嵌入)等。可以通过以下命令安装这些库: ```bash pip install transformers faiss-cpu sentence-transformers ``` ### 3. 构建知识库 将需要检索的知识库转换为向量形式。可以使用`sentence-transformers`库中的预训练模型来生成句子的嵌入表示。例如,使用`all-MiniLM-L6-v2`模型生成句子嵌入: ```python from sentence_transformers import SentenceTransformer model = SentenceTransformer('all-MiniLM-L6-v2') sentences = ["知识库中的句子1", "知识库中的句子2", ...] embeddings = model.encode(sentences) ``` ### 4. 构建检索器 使用FAISS库来构建高效的相似性搜索索引。将生成的句子嵌入存储到FAISS索引中,以便快速检索: ```python import faiss dimension = embeddings.shape[1] index = faiss.IndexFlatL2(dimension) index.add(embeddings) ``` ### 5. 实现检索逻辑 当用户提出问题时,使用相同的模型将问题转换为向量,并在FAISS索引中查找最相似的句子: ```python question = "用户的问题" question_embedding = model.encode([question]) distances, indices = index.search(question_embedding, k=5) # 检索前5个最相似的句子 retrieved_sentences = [sentences[i] for i in indices[0]] ``` ### 6. 构建生成器 使用Hugging Face的`transformers`库加载预训练的生成模型,如`T5`或`BART`,并生成最终的回答: ```python from transformers import T5Tokenizer, T5ForConditionalGeneration tokenizer = T5Tokenizer.from_pretrained("t5-small") generator = T5ForConditionalGeneration.from_pretrained("t5-small") input_text = f"问题: {question} 相关信息: {' '.join(retrieved_sentences)}" input_ids = tokenizer.encode(input_text, return_tensors="pt") output = generator.generate(input_ids, max_length=150) answer = tokenizer.decode(output[0], skip_special_tokens=True) ``` ### 7. 测试与优化 测试RAG应用的效果,并根据实际表现进行优化。可以通过调整检索器的参数(如`k`值)或选择不同的生成模型来提高回答的质量。 ### 8. 部署应用 将RAG应用部署到生产环境中,可以使用Flask或FastAPI等框架构建Web服务,提供API接口供外部调用。 ### 示例代码 以下是一个完整的示例代码片段,展示了如何将上述步骤整合在一起: ```python from sentence_transformers import SentenceTransformer import faiss from transformers import T5Tokenizer, T5ForConditionalGeneration # 加载模型和生成嵌入 model = SentenceTransformer('all-MiniLM-L6-v2') sentences = ["知识库中的句子1", "知识库中的句子2"] embeddings = model.encode(sentences) # 构建FAISS索引 dimension = embeddings.shape[1] index = faiss.IndexFlatL2(dimension) index.add(embeddings) # 检索逻辑 question = "用户的问题" question_embedding = model.encode([question]) distances, indices = index.search(question_embedding, k=5) retrieved_sentences = [sentences[i] for i in indices[0]] # 生成回答 tokenizer = T5Tokenizer.from_pretrained("t5-small") generator = T5ForConditionalGeneration.from_pretrained("t5-small") input_text = f"问题: {question} 相关信息: {' '.join(retrieved_sentences)}" input_ids = tokenizer.encode(input_text, return_tensors="pt") output = generator.generate(input_ids, max_length=150) answer = tokenizer.decode(output[0], skip_special_tokens=True) print(answer) ``` 通过以上步骤,你可以成功构建一个基于RAG的应用,并根据实际需求进行扩展和优化。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值