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

分享一套锋哥原创的的AI大模型-基于LangChain的RAG健康知识智能问答系统(Flask+Vue3+Ollama+Chroma)

大家好,我是锋哥,分享一套锋哥原创的AI大模型-基于LangChain的RAG健康知识智能问答系统(Flask+Vue3+Ollama+Chroma),分享下哈。

项目介绍

随着人工智能技术的快速发展,大语言模型(Large Language Model,LLM)在自然语言处理领域展现出强大的理解与生成能力。然而,通用大语言模型存在"幻觉"问题,即可能生成与事实不符的内容,且无法直接获取企业内部的专有知识。检索增强生成(Retrieval-Augmented Generation,RAG)技术通过将外部知识库与大语言模型相结合,有效解决了上述问题,使AI能够基于真实文档内容进行精准回答。

本论文设计并实现了一个基于RAG技术的企业知识库智能问答系统。系统采用前后端分离的B/S架构,前端使用Vue3框架配合Element Plus组件库构建用户界面,后端基于Python Flask框架提供RESTful API服务。系统核心功能包括:知识库管理、文档上传与向量化处理、基于RAG的智能问答、对话历史管理、用户权限控制以及数据统计分析。在向量化处理环节,系统利用Ollama部署本地嵌入模型将文档文本转化为向量表示,并存储于ChromaDB向量数据库;在问答环节,通过LangChain框架编排RAG处理链,实现从用户提问到向量检索、上下文构建、LLM生成回答的完整流程。

源码下载

链接:https://pan.baidu.com/s/14Bw9F7RQUxUOqFtPFBd5cA?pwd=1234
提取码:1234

系统展示

核心代码

""" RAG问答核心服务 基于LangChain构建检索增强生成(RAG)问答链 使用Ollama的qwen3:8b作为大语言模型 """ from flask import current_app from langchain_ollama import ChatOllama from langchain_core.prompts import ChatPromptTemplate from langchain_core.output_parsers import StrOutputParser from langchain_core.runnables import RunnablePassthrough from services.vector_service import VectorService # RAG系统提示词模板 SYSTEM_PROMPT = """你是一个企业内部知识库智能问答助手。请根据以下提供的参考资料来回答用户的问题。 要求: 1. 仅根据参考资料中的内容来回答问题,不要编造信息 2. 如果参考资料中没有相关信息,请如实告知用户 3. 回答要准确、简洁、专业 4. 使用中文回答 参考资料: {context} """ # 用户提问模板 USER_PROMPT = "{question}" class RAGService: """RAG问答服务类""" def __init__(self): """初始化LLM模型和向量服务""" self.llm = ChatOllama( model=current_app.config['OLLAMA_LLM_MODEL'], base_url=current_app.config['OLLAMA_BASE_URL'], temperature=0.3, timeout=3600 ) self.vector_service = VectorService() def _format_docs(self, docs): """ 将检索到的文档格式化为上下文文本 :param docs: 检索到的文档列表 :return: 格式化后的文本 """ formatted = [] for i, doc in enumerate(docs, 1): source = doc.metadata.get('file_name', '未知来源') formatted.append(f"[来源{i}: {source}]\n{doc.page_content}") return '\n\n'.join(formatted) def _extract_source_docs(self, docs): """ 提取参考文档来源信息 :param docs: 检索到的文档列表 :return: 来源信息列表 """ sources = [] seen = set() for doc in docs: file_name = doc.metadata.get('file_name', '未知') if file_name not in seen: seen.add(file_name) sources.append({ 'file_name': file_name, 'content': doc.page_content[:200] }) return sources def ask(self, question, kb_id): """ RAG问答主方法 流程: 用户提问 -> 向量检索 -> 构建上下文 -> LLM生成回答 :param question: 用户问题 :param kb_id: 知识库ID :return: (回答文本, 参考来源列表) """ # 获取知识库的检索器 retriever = self.vector_service.get_retriever(kb_id) # 检索相关文档 docs = retriever.invoke(question) if not docs: return '抱歉,在知识库中未找到与您问题相关的内容,请尝试换个方式提问。', [] # 构建提示词 prompt = ChatPromptTemplate.from_messages([ ('system', SYSTEM_PROMPT), ('human', USER_PROMPT) ]) # 构建RAG链:检索 -> 格式化上下文 -> 提示词 -> LLM -> 解析输出 rag_chain = ( { 'context': lambda x: self._format_docs(docs), 'question': RunnablePassthrough() } | prompt | self.llm | StrOutputParser() ) # 执行问答 answer = rag_chain.invoke(question) # 提取参考来源 source_docs = self._extract_source_docs(docs) return answer, source_docs
http://www.jsqmd.com/news/545802/

相关文章:

  • ente/auth日志系统解析:监控与调试技巧
  • 巨有科技:银发文旅风口来了!康养旅游这样做才赚
  • 电商用户评价分析实战:用Python+SnowNLP打造情感分析工具(附代码)
  • 虚拟化管理工具实战指南:如何通过virt-manager实现高效虚拟机管理
  • QT窗口特效实战:从透明到异形控件的全方位实现指南
  • # 发散创新:边缘容器中的轻量级服务部署实战与优化策略在云计算向边缘计算演进的浪潮中,**边缘容器技术**正成
  • Java高频面试题:ShardingSphere的核心模块有哪些?他们是如何工作的?
  • HP-Socket代码重构工作量估算准确性分析:偏差与改进
  • RPA-Python与pytest-buildah集成:Buildah测试自动化
  • 利玛窦的记忆宫殿 - liyan
  • Obsidian Local Images Plus 终极指南:如何一键解决所有本地图片管理难题
  • Zotero插件Ethereal Style:打造高效文献管理新体验
  • PVE 部署 iStoreOS 软路由完整教程(避坑版)
  • COMSOL仿真技术在变压器电磁场模型研究中的应用:探究磁密分布与电路状态结果
  • OpenClaw学习助手:GLM-4.7-Flash实现的错题本自动整理
  • 3步突破分子构象采样瓶颈:从理论到药物研发落地
  • SQL Server数据同步不求人:手把手教你用Linked Server实现跨库查询(2024最新版)
  • VAP:腾讯开源的高性能动画播放引擎,如何让你的应用动起来更流畅?
  • ente/auth缓存机制详解:提高系统响应速度
  • OpenClaw办公自动化:GLM-4.7-Flash处理Excel与PDF文档
  • 告别裸机思维:在GD32单片机上用FreeRTOS管理多个传感器(附源码)
  • Windows容器安全加固指南:远程访问防护与容器安全配置
  • EDK II代码质量指标定义:各指标详细说明
  • S32K3低功耗模式实战:如何用WKPU和Pad-Keeping实现高效唤醒(附代码示例)
  • Ubuntu 20.04系统上CYBER-VISION零号协议深度学习环境一键配置
  • RPA-Python与pytest-aqua-security集成:Aqua Security测试自动化
  • brpc代码评审效率工具:自动化检查与反馈
  • 如何构建你的第一个Python高频交易模型:完整实战指南
  • LangChainJS黑客马拉松:创新AI应用的开发竞赛
  • Llama-3.2V-11B-cot惊艳效果:多轮对话中视觉记忆一致性验证