2026/5/21 11:14:35
网站建设
项目流程
泉州网站建设是什么意思,wordpress用户导入数据库表,石家庄模板网站建设,济南自助建站RAG(Retrieval Augmented Generation)
检索增强生成 (RAG) 是一种 AI 框架#xff0c;它结合了传统的信息检索系统#xff08;如搜索引擎或数据库#xff09;与大型语言模型#xff08;LLMs#xff09;的生成能力。
RAG 的核心思想是#xff1a;
检索 (Retrieval): 当用户…RAG(Retrieval Augmented Generation)检索增强生成 (RAG)是一种 AI 框架它结合了传统的信息检索系统如搜索引擎或数据库与大型语言模型LLMs的生成能力。RAG 的核心思想是检索 (Retrieval): 当用户提出问题时首先从一个外部的、权威的知识库中检索出与问题最相关的几段信息上下文。增强 (Augmented): 将检索到的这些信息作为额外的上下文与用户原始的问题一起“增强” LLM 的输入。生成 (Generation): LLM 在这个增强的上下文中生成回答。RAG优势减少幻觉 (Hallucinations): LLM 倾向于“编造”不存在的事实。RAG 通过提供真实、可靠的外部信息大大降低了 LLM 产生不准确或虚假信息的可能性。知识时效性LLM 的训练数据是静态的。RAG 允许你使用最新的数据例如你 MySQL 数据库中每天更新的课程信息而无需重新训练或微调 LLM。特定领域知识LLM 可能对你的公司内部数据、特定行业的术语或小众知识了解甚少。RAG 使 LLM 能够回答这些特定领域的问题。可追溯性/可解释性 由于回答是基于检索到的文档生成的你可以很容易地提供引用来源 (source_documents)让用户知道答案来自哪里增加了透明度和信任度。成本效益与耗时且昂贵的 LLM 微调相比RAG 通常是更经济高效的解决方案。你只需更新向量数据库即可。RAG实战AI课程规划课程ID课程ID对应数据库中的, 这些数值AI是不能识别的, 需要增强之后输出。环境准备这里用到的包有很多, 主要有这些:streamlitlangchainlangchain-corepymysqlfaiss-cpu我目前用到的库, 可以选择性复制:aiohappyeyeballs2.6.1aiohttp3.11.13aiosignal1.3.2altair5.5.0annotated-types0.7.0anyio4.8.0attrs25.1.0blinker1.9.0cachetools5.5.2certifi2025.1.31charset-normalizer3.4.1click8.1.8dashscope1.22.2dataclasses-json0.6.7distro1.9.0frozenlist1.5.0gitdb4.0.12GitPython3.1.44greenlet3.1.1h110.14.0httpcore1.0.7httpx0.28.1httpx-sse0.4.0idna3.10Jinja23.1.6jiter0.9.0jsonpatch1.33jsonpointer3.0.0jsonschema4.23.0jsonschema-specifications2024.10.1langchain0.3.20langchain-community0.3.19langchain-core0.3.45langchain-deepseek0.1.2langchain-openai0.3.8langchain-text-splitters0.3.6langsmith0.3.15MarkupSafe3.0.2marshmallow3.26.1multidict6.1.0mypy-extensions1.0.0narwhals1.30.0numpy2.2.3openai1.66.3orjson3.10.15packaging24.2pandas2.2.3pillow11.1.0propcache0.3.0protobuf5.29.3pyarrow19.0.1pydantic2.10.6pydantic-settings2.8.1pydantic_core2.27.2pydeck0.9.1python-dateutil2.9.0.post0python-dotenv1.0.1pytz2025.1PyYAML6.0.2referencing0.36.2regex2024.11.6requests2.32.3requests-toolbelt1.0.0rpds-py0.23.1six1.17.0smmap5.0.2sniffio1.3.1SQLAlchemy2.0.39streamlit1.43.1tenacity9.0.0tiktoken0.9.0toml0.10.2tornado6.4.2tqdm4.67.1typing-inspect0.9.0typing_extensions4.12.2tzdata2025.1urllib32.3.0watchdog6.0.0websocket-client1.8.0yarl1.18.3zstandard0.23.0PyMySQL1.1.1faiss-cpu1.11.0当前这里也需要有api-key, 这个langchain框架大部分都支持的。分步处理外部知识库(mysql)# src.api.useCourse.pyimport reimport pymysqlimport pandas as pdfrom langchain_core.documents import Documentdef fetch_and_preprocess_data(table_name, course_name, course_id): print(开始查询数据...) # 建立连接 conn pymysql.connect( host****, user****, password****, database**** ) try: with conn.cursor() as cursor: # 查询数据 query fSELECT {course_name}, {course_id} FROM {table_name} LIMIT 20 cursor.execute(query) data cursor.fetchall() print(查询结果) print(data) df pd.DataFrame(data, columns[course_name, course_id]) # 文本预处理函数 def preprocess_text(text): ifnot isinstance(text, str): return text re.sub(r.*?, , text) # 去除HTML标签 text re.sub(r\s, , text).strip() # 压缩空白符 return text df[cleaned_text] df[course_name].apply(preprocess_text) print(✅ 数据预处理完成。) # df.to_csv(data.csv, indexFalse) return df except Exception as e: print(f❌ 查询或预处理MySQL数据失败: {e}) return pd.DataFrame() finally: if conn: conn.close()def getMysqlDocuments(): # 示例从 tb_course 表中提取 course_name 字段 mysql_data_df fetch_and_preprocess_data(tb_course, course_name, id) ifnot mysql_data_df.empty: documents [] for index, row in mysql_data_df.iterrows(): # 确保文本和ID有效 if pd.notna(row[cleaned_text]) and row[cleaned_text].strip() and pd.notna(row[course_id]): doc Document( page_contentrow[cleaned_text], metadata{ course_id: str(row[course_id]), # 建议将ID转换为字符串 original_content: row[course_name] # 存储原始内容方便后续追溯 } ) documents.append(doc) if documents: print(f✅ 成功构建 {len(documents)} 个 LangChain Document 对象。) print(\n第一个 Document 示例) print(documents[0]) else: print(⚠️ 没有有效的 Document 对象可供处理。) return documents检索组件(embedding)加载mysql或者CSV文件# load-file.pyfrom langchain_community.document_loaders import PyPDFLoader, Docx2txtLoaderfrom frontend.components.sidebar import check_csv_in_folderimport streamlit as stfrom src.api.useCourse import getMysqlDocumentsdef load_file(): all_docs [] load_files check_csv_in_folder() mysql_docs getMysqlDocuments() print(load_files)if len(load_files) 0 : st.warning(未检测到上传文件)else: for file in load_files: file_path f/data/raw/{file} # 加载 PDF 文件 pdf_loader PyPDFLoader(file_path) pdf_docs pdf_loader.load() all_docs all_docs pdf_docs# 合并所有文档return all_docs mysql_docs数据清洗# transform-file.pyfrom src.model_manage.load_file import load_filefrom langchain.text_splitter import RecursiveCharacterTextSplitterfrom langchain_core.documents import Document# 过滤和清洗def clean_text(doc): # 示例移除多余的空格和换行符 cleaned_content doc.page_content.replace(\n, ).strip() # 保留原始元数据可选 return Document(page_contentcleaned_content, metadatadoc.metadata)# 文本转换def transform_data(): # 加载文件 docs load_file() if docs isNone: returnNone # 分块处理 text_splitter RecursiveCharacterTextSplitter( chunk_size500, # 每块文本的最大长度 chunk_overlap50, # 块之间的重叠长度 length_functionlen ) split_docs text_splitter.split_documents(docs) # 清洗文本 cleaned_docs [clean_text(doc) for doc in split_docs] return cleaned_docs向量化处理# embedding.pyfrom langchain_community.embeddings import DashScopeEmbeddingsfrom langchain_community.vectorstores import FAISSfrom src.model_manage.transform_file import transform_data 向量化文本数据 author: petterdef embedding_data(): cleaned_docs transform_data()if cleaned_docs isNone: returnNone# 向量化文本 embeddings DashScopeEmbeddings( modeltext-embedding-v2, )# 生成向量数据库 vector_db FAISS.from_documents(cleaned_docs, embeddings)# 保存到本地可选 vector_db.save_local(faiss_index)return vector_db增强/上下文注入import streamlit as stfrom langchain.chains import RetrievalQAfrom langchain_core.prompts import ChatPromptTemplatefrom langchain.callbacks.streaming_stdout import StreamingStdOutCallbackHandlerfrom langchain_core.runnables import RunnableLambdafrom operator import itemgetterfrom src.model_manage.embedding import embedding_datavector_db embedding_data()# 模型初始化# --------------------------st.cache_resourcedef get_model(): 初始化并缓存DeepSeek模型 qa_chain RetrievalQA.from_chain_type( llm 大模型名称, chain_typestuff, # 上下文检索 retrievervector_db.as_retriever( search_typesimilarity, search_kwargs{k: 3} # 检索最相似的 3 个文档 ), return_source_documentsTrue, ) return qa_chain生成组件def generate_stream_response(prompt): 生成流式响应内容 model get_model() # 流式响应数据增强 final_chain model | RunnableLambda(postprocess_ai_response) chain final_chain.invoke({ query: prompt }) try: for chunk in chain: yield chunk except Exception as e: yield f⚠️ 请求失败{str(e)}响应内容增强# 处理AI的回答, 添加自定义信息def postprocess_ai_response(input_dict: dict) - str: ai_response input_dict[result] # AI的回答 source_documents input_dict.get(source_documents, []) # 检索到的源文档 custom_info related_course_ids set() if source_documents: for doc in source_documents: course_id doc.metadata.get(course_id) if course_id: related_course_ids.add(course_id) if related_course_ids: custom_info f\n\n--- 本次回答引用了以下课程ID{, .join(sorted(list(related_course_ids)))} --- final_output f{ai_response}{custom_info} return final_output室内课程规划到这里, RAG核心功能代码已经全部完成了, 至于页面效果, 需要做些调整, ⛽️⛽️其实这里增强的只有课程ID, 客户端便可以根据课程ID,查询出相对应的课程详情, 展示对应课程或者计划或者其他的方式呈现给用户, 这里相当API想入门 AI 大模型却找不到清晰方向备考大厂 AI 岗还在四处搜集零散资料别再浪费时间啦2025 年AI 大模型全套学习资料已整理完毕从学习路线到面试真题从工具教程到行业报告一站式覆盖你的所有需求现在全部免费分享扫码免费领取全部内容一、学习必备100本大模型电子书26 份行业报告 600 套技术PPT帮你看透 AI 趋势想了解大模型的行业动态、商业落地案例大模型电子书这份资料帮你站在 “行业高度” 学 AI1. 100本大模型方向电子书2. 26 份行业研究报告覆盖多领域实践与趋势报告包含阿里、DeepSeek 等权威机构发布的核心内容涵盖职业趋势《AI 职业趋势报告》《中国 AI 人才粮仓模型解析》商业落地《生成式 AI 商业落地白皮书》《AI Agent 应用落地技术白皮书》领域细分《AGI 在金融领域的应用报告》《AI GC 实践案例集》行业监测《2024 年中国大模型季度监测报告》《2025 年中国技术市场发展趋势》。3. 600套技术大会 PPT听行业大咖讲实战PPT 整理自 2024-2025 年热门技术大会包含百度、腾讯、字节等企业的一线实践安全方向《端侧大模型的安全建设》《大模型驱动安全升级腾讯代码安全实践》产品与创新《大模型产品如何创新与创收》《AI 时代的新范式构建 AI 产品》多模态与 Agent《Step-Video 开源模型视频生成进展》《Agentic RAG 的现在与未来》工程落地《从原型到生产AgentOps 加速字节 AI 应用落地》《智能代码助手 CodeFuse 的架构设计》。二、求职必看大厂 AI 岗面试 “弹药库”300 真题 107 道面经直接抱走想冲字节、腾讯、阿里、蔚来等大厂 AI 岗这份面试资料帮你提前 “押题”拒绝临场慌1. 107 道大厂面经覆盖 Prompt、RAG、大模型应用工程师等热门岗位面经整理自 2021-2025 年真实面试场景包含 TPlink、字节、腾讯、蔚来、虾皮、中兴、科大讯飞、京东等企业的高频考题每道题都附带思路解析2. 102 道 AI 大模型真题直击大模型核心考点针对大模型专属考题从概念到实践全面覆盖帮你理清底层逻辑3. 97 道 LLMs 真题聚焦大型语言模型高频问题专门拆解 LLMs 的核心痛点与解决方案比如让很多人头疼的 “复读机问题”三、路线必明 AI 大模型学习路线图1 张图理清核心内容刚接触 AI 大模型不知道该从哪学起这份「AI大模型 学习路线图」直接帮你划重点不用再盲目摸索路线图涵盖 5 大核心板块从基础到进阶层层递进一步步带你从入门到进阶从理论到实战。L1阶段:启航篇丨极速破界AI新时代L1阶段了解大模型的基础知识以及大模型在各个行业的应用和分析学习理解大模型的核心原理、关键技术以及大模型应用场景。L2阶段攻坚篇丨RAG开发实战工坊L2阶段AI大模型RAG应用开发工程主要学习RAG检索增强生成包括Naive RAG、Advanced-RAG以及RAG性能评估还有GraphRAG在内的多个RAG热门项目的分析。L3阶段跃迁篇丨Agent智能体架构设计L3阶段大模型Agent应用架构进阶实现主要学习LangChain、 LIamaIndex框架也会学习到AutoGPT、 MetaGPT等多Agent系统打造Agent智能体。L4阶段精进篇丨模型微调与私有化部署L4阶段大模型的微调和私有化部署更加深入的探讨Transformer架构学习大模型的微调技术利用DeepSpeed、Lamam Factory等工具快速进行模型微调并通过Ollama、vLLM等推理部署框架实现模型的快速部署。L5阶段专题集丨特训篇 【录播课】四、资料领取全套内容免费抱走学 AI 不用再找第二份不管你是 0 基础想入门 AI 大模型还是有基础想冲刺大厂、了解行业趋势这份资料都能满足你现在只需按照提示操作就能免费领取扫码免费领取全部内容2025 年想抓住 AI 大模型的风口别犹豫这份免费资料就是你的 “起跑线”