Qwen3.5-9B实战教程:app.py接入LangChain+RAG增强知识库

张开发
2026/6/1 0:39:37 15 分钟阅读
Qwen3.5-9B实战教程:app.py接入LangChain+RAG增强知识库
Qwen3.5-9B实战教程app.py接入LangChainRAG增强知识库1. 项目概述Qwen3.5-9B是一款拥有90亿参数的开源大语言模型具备强大的逻辑推理、代码生成和多轮对话能力。本教程将指导您如何通过修改app.py文件将Qwen3.5-9B与LangChain框架和RAG检索增强生成技术集成构建一个具备知识库增强能力的智能对话系统。1.1 核心能力多模态理解支持图文输入Qwen3.5-9B-VL变体长上下文支持最高可达128K tokens知识库增强通过RAG技术扩展模型知识边界灵活部署支持Gradio WebUI快速搭建交互界面2. 环境准备2.1 基础环境conda activate torch28 pip install langchain0.1.0 faiss-cpu sentence-transformers2.2 关键依赖版本包版本要求说明transformers5.0.0支持Qwen3.5模型langchain0.1.0RAG框架支持faiss-cpu1.7.4向量检索库sentence-transformers2.2.2文本嵌入模型3. 项目结构改造3.1 新增文件结构/root/qwen3.5-9b/ ├── knowledge_base/ # 新增知识库目录 │ ├── documents/ # 存放原始文档 │ └── vector_store/ # 存储向量索引 ├── rag_utils.py # 新增RAG工具类 └── app.py # 改造后的主程序3.2 app.py核心改造from langchain.embeddings import HuggingFaceEmbeddings from langchain.vectorstores import FAISS from rag_utils import load_knowledge_base # 初始化RAG组件 embeddings HuggingFaceEmbeddings(model_namesentence-transformers/paraphrase-multilingual-MiniLM-L12-v2) vector_store load_knowledge_base(embeddings) def rag_augmented_response(query, chat_history): # 1. 检索相关知识片段 docs vector_store.similarity_search(query, k3) context \n.join([doc.page_content for doc in docs]) # 2. 构建增强提示 prompt f基于以下上下文回答问题 {context} 问题{query} 回答 # 3. 调用Qwen3.5生成回答 response model.generate(prompt) return response4. RAG工具类实现4.1 rag_utils.py核心代码from langchain.document_loaders import DirectoryLoader from langchain.text_splitter import RecursiveCharacterTextSplitter def load_knowledge_base(embeddings): # 1. 加载文档 loader DirectoryLoader(knowledge_base/documents/, glob**/*.txt) documents loader.load() # 2. 文本分割 text_splitter RecursiveCharacterTextSplitter( chunk_size500, chunk_overlap100 ) splits text_splitter.split_documents(documents) # 3. 构建向量存储 vector_store FAISS.from_documents(splits, embeddings) vector_store.save_local(knowledge_base/vector_store) return vector_store4.2 知识库准备建议文档格式建议使用纯文本(.txt)或Markdown(.md)格式内容组织按主题分文件夹存放如product_docs/,tech_specs/等预处理建议移除无关的页眉页脚统一编码为UTF-8对表格数据转换为文本描述5. 对话流程优化5.1 改造后的对话处理逻辑def chat_interface(query, history): # 1. 检查是否需要知识库增强 if needs_knowledge_augmentation(query): response rag_augmented_response(query, history) else: # 2. 普通对话模式 response model.chat(query, history) # 3. 记录对话历史 update_history(history, query, response) return response def needs_knowledge_augmentation(query): # 简单关键词触发规则 keywords [如何, 步骤, 说明, 文档] return any(keyword in query for keyword in keywords)5.2 效果对比示例查询类型原始响应RAG增强响应产品X有哪些功能通用功能描述基于产品文档的详细特性列表如何配置Y参数一般性建议来自技术手册的具体配置步骤最新版本更新了什么无法回答从更新日志中提取的具体变更内容6. 性能优化建议6.1 检索优化技巧分块策略技术文档500-800字符/块FAQ内容完整问题-答案对保持在一起元数据过滤docs vector_store.similarity_search( query, k3, filter{source: product_docs/} )混合检索# 结合语义检索和关键词检索 docs vector_store.max_marginal_relevance_search(query, k3)6.2 缓存机制实现from functools import lru_cache lru_cache(maxsize1000) def get_cached_response(query): return rag_augmented_response(query)7. 常见问题解决7.1 知识库加载失败错误现象Failed to load vector store: Invalid file format解决方案检查知识库路径权限ls -l knowledge_base/vector_store重新生成向量索引rm -rf knowledge_base/vector_store/* python rag_utils.py7.2 检索结果不相关优化方法调整分块大小增大chunk_size尝试不同嵌入模型embeddings HuggingFaceEmbeddings(model_nameGanymedeNil/text2vec-large-chinese)添加查询扩展expanded_query query extract_keywords(query)7.3 响应延迟高性能优化启用GPU加速embeddings HuggingFaceEmbeddings( model_name..., model_kwargs{device: cuda} )限制检索范围docs vector_store.similarity_search(query, k2) # 减少k值8. 进阶扩展方向8.1 多知识库切换def load_multi_knowledge_base(kb_name): vector_stores { product: FAISS.load_local(kb_product, embeddings), tech: FAISS.load_local(kb_tech, embeddings) } return vector_stores.get(kb_name)8.2 对话历史增强def history_aware_retrieval(query, history): # 合并最近3轮对话作为上下文 context \n.join([fQ:{q}\nA:{a} for q,a in history[-3:]]) augmented_query f上下文{context}\n当前问题{query} return vector_store.similarity_search(augmented_query)8.3 结果后处理def post_process(response): # 移除重复内容 response remove_duplicate_sentences(response) # 格式化列表和步骤 response format_numbered_lists(response) return response9. 总结通过本教程您已经成功将Qwen3.5-9B与LangChain和RAG技术集成实现了知识库增强的智能对话系统。关键收获包括核心价值突破模型固有知识限制实现动态知识更新关键技术文档加载与分块处理向量检索与相似度计算提示工程构建优化方向检索效率、结果相关性、响应速度建议定期更新知识库内容并监控问答质量持续优化检索策略和提示模板。获取更多AI镜像想探索更多AI镜像和应用场景访问 CSDN星图镜像广场提供丰富的预置镜像覆盖大模型推理、图像生成、视频生成、模型微调等多个领域支持一键部署。

更多文章