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

010网站建设wordpress特效主题免费下载

010网站建设,wordpress特效主题免费下载,江苏定制网站建设费用,贵州毕节网站建设各位老铁#xff0c;欢迎来到我们专栏的第一个实战项目。 在过去的三个章节里#xff0c;我们已经完成了所有的理论储备和环境搭建。我们理解了LLM的本质#xff0c;掌握了Prompt Engineering的要领#xff0c;洞悉了Embedding和向量数据库的魔力#xff0c;并且熟悉了La…各位老铁欢迎来到我们专栏的第一个实战项目。 在过去的三个章节里我们已经完成了所有的理论储备和环境搭建。我们理解了LLM的本质掌握了Prompt Engineering的要领洞悉了Embedding和向量数据库的魔力并且熟悉了LangChain这个强大的“瑞士军刀”。 现在是时候将这些散落的“龙珠”汇集起来召唤出我们的第一条“神龙”了。 这个项目是当前AI应用领域最经典、最实用、也是商业价值最高的场景之一本地知识库问答。我们将从零开始构建一个完整的系统它可以 读取并“学习”你提供的一份或多份本地文档例如一份PDF格式的产品说明书或公司规章制度。当用户用自然语言提问时系统能够仅仅依据这些文档的内容给出精准的回答。如果文档中没有相关信息它会明确地告知用户“根据已有信息无法回答”而不是凭空捏造产生幻觉。 这个项目是RAG检索增强生成模式的终极体现。完成它你将不再是一个AI领域的旁观者而是一个能够交付真正价值的AI应用工程师。 本章内容详尽代码完整请务必保持专注跟上我的节奏。让我们开始构建。 4.1 项目蓝图与技术栈规划 在动工之前我们首先要像一个架构师一样画出我们系统的蓝图。一个清晰的架构图是我们后续所有工作的指导方针。 我们的系统本质上包含两个核心的、相互独立的流程 知识注入流程 (Ingestion Pipeline)这个流程是一次性的或者定期执行的。它的任务是将原始文档处理成向量化的知识并存入向量数据库。问答检索流程 (Query Pipeline)这个流程是实时响应用户请求的。它接收用户问题从向量数据库中检索相关知识并交由LLM生成最终答案。 下面这张图就是我们本次项目的核心架构图 #mermaid-svg-NrhIAa9vErXkYlOW {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-NrhIAa9vErXkYlOW .error-icon{fill:#552222;}#mermaid-svg-NrhIAa9vErXkYlOW .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-NrhIAa9vErXkYlOW .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-NrhIAa9vErXkYlOW .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-NrhIAa9vErXkYlOW .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-NrhIAa9vErXkYlOW .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-NrhIAa9vErXkYlOW .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-NrhIAa9vErXkYlOW .marker{fill:#333333;stroke:#333333;}#mermaid-svg-NrhIAa9vErXkYlOW .marker.cross{stroke:#333333;}#mermaid-svg-NrhIAa9vErXkYlOW svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-NrhIAa9vErXkYlOW .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-NrhIAa9vErXkYlOW .cluster-label text{fill:#333;}#mermaid-svg-NrhIAa9vErXkYlOW .cluster-label span{color:#333;}#mermaid-svg-NrhIAa9vErXkYlOW .label text,#mermaid-svg-NrhIAa9vErXkYlOW span{fill:#333;color:#333;}#mermaid-svg-NrhIAa9vErXkYlOW .node rect,#mermaid-svg-NrhIAa9vErXkYlOW .node circle,#mermaid-svg-NrhIAa9vErXkYlOW .node ellipse,#mermaid-svg-NrhIAa9vErXkYlOW .node polygon,#mermaid-svg-NrhIAa9vErXkYlOW .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-NrhIAa9vErXkYlOW .node .label{text-align:center;}#mermaid-svg-NrhIAa9vErXkYlOW .node.clickable{cursor:pointer;}#mermaid-svg-NrhIAa9vErXkYlOW .arrowheadPath{fill:#333333;}#mermaid-svg-NrhIAa9vErXkYlOW .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-NrhIAa9vErXkYlOW .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-NrhIAa9vErXkYlOW .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-NrhIAa9vErXkYlOW .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-NrhIAa9vErXkYlOW .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-NrhIAa9vErXkYlOW .cluster text{fill:#333;}#mermaid-svg-NrhIAa9vErXkYlOW .cluster span{color:#333;}#mermaid-svg-NrhIAa9vErXkYlOW div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-NrhIAa9vErXkYlOW :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}流程二: 问答检索 (在线/实时)流程一: 知识注入 (离线/一次性)5. 查询向量化用户提问6. 检索相关文档7. 构建增强Prompt8. 调用LLM生成回答返回精准答案2. 文本分割1. 加载文档 (PDF)3. 文本向量化4. 存入向量数据库基于这个蓝图我们确定本次项目的技术栈 核心框架: Python 3.10AI编排: LangChain - 我们整个工作流的粘合剂。大语言模型 (LLM): 通义千问 (qwen-turbo) - 由阿里云达摩院提供负责最终的理解和生成。Embedding模型: 通义千问文本向量模型 (text-embedding-v1) - 负责将文本翻译成向量。向量数据库: ChromaDB - 一个轻量级、开源、可本地运行的向量数据库。文档加载: PyPDFLoader - LangChain集成的一个用于加载PDF文档的工具。交互界面: Streamlit - 一个能用纯Python快速构建Web UI的库。 准备工作 获取API Key: 访问阿里云百炼平台。开通服务并进入控制台在“API-KEY管理”中创建你的专属API Key。严格遵循我们的安全准则在你的项目根目录创建.env文件并写入DASHSCOPE_API_KEYsk-YourAlibabaCloudApiKey同时将.env加入.gitignore文件。 安装所有依赖: 确保你已激活之前创建的venv虚拟环境。执行以下命令一次性安装所有我们需要的库pip install langchain langchain-community dashscope chromadb pypdf streamlit langchain-chromalangchain-chroma: ChromaDB与LangChain集成的最新独立包我们遵循最佳实践使用这个版本。 准备一份测试文档: 在你的项目根目录下创建一个名为docs的文件夹。找一份你感兴趣的PDF文档放进去比如一份产品说明书、一篇论文、或者一份公开的报告。 一切就绪让我们开始编写知识注入流程的代码。 4.2 流程一构建知识注入管道 (ingest.py) 这个脚本的任务是读取docs文件夹下的所有PDF将它们处理后存入本地的ChromaDB数据库。这个脚本只需要运行一次。 在你的项目根目录创建一个名为ingest.py的文件并写入以下代码 import os from dotenv import load_dotenvfrom langchain_community.document_loaders import PyPDFLoader, DirectoryLoader from langchain.text_splitter import RecursiveCharacterTextSplitter from langchain_community.embeddings.dashscope import DashScopeEmbeddings from langchain_chroma import Chroma# 加载.env文件中的环境变量 load_dotenv()# 定义文档目录和Chroma持久化目录 DOCS_PATH docs CHROMA_PATH chroma_dbdef main():主执行函数1. 加载文档2. 分割文档3. 向量化并存入ChromaDBprint(--- 开始知识注入流程 ---)# 1. 加载文档print(f[步骤1] 从 {DOCS_PATH} 目录加载PDF文档...)if not os.path.exists(DOCS_PATH):print(f错误文档目录 {DOCS_PATH} 不存在。请创建该目录并放入PDF文件。)returnloader DirectoryLoader(DOCS_PATH, glob*.pdf, loader_clsPyPDFLoader)documents loader.load()if not documents:print(错误在docs目录中未找到任何PDF文件。)returnprint(f成功加载 {len(documents)} 个文档。)# 2. 分割文档print(\n[步骤2] 将加载的文档分割成小块(chunks)...)text_splitter RecursiveCharacterTextSplitter(chunk_size500, chunk_overlap100)chunks text_splitter.split_documents(documents)print(f文档被成功分割成 {len(chunks)} 个小块。)# 3. 向量化并存入ChromaDBprint(\n[步骤3] 初始化Embedding模型并创建Chroma数据库...)embeddings DashScopeEmbeddings(modeltext-embedding-v1)db Chroma.from_documents(chunks, embeddings, persist_directoryCHROMA_PATH)print(f\n--- 知识注入成功---)print(f向量化数据已成功存入 {CHROMA_PATH} 目录。)print(现在您可以运行查询脚本或Web UI来与您的知识库进行交互了。)if __name__ __main__:main()代码解析 DirectoryLoader: LangChain提供的便捷工具自动遍历docs目录使用PyPDFLoader加载所有PDF文件。RecursiveCharacterTextSplitter: 智能文本分割器。chunk_size500定义了每个文本块的目标大小chunk_overlap100确保块之间的上下文连续性。DashScopeEmbeddings: LangChain对通义千问文本向量模型的封装。我们只需实例化LangChain便会在需要时自动调用它。langchain_chroma.Chroma: 我们使用最新的独立包来与ChromaDB交互。Chroma.from_documents方法是一个强大的“三合一”操作它会自动完成文本块的向量化、存储并通过persist_directory参数将数据库完整地写入本地磁盘。 如何运行 在终端已激活虚拟环境中直接运行此脚本 python ingest.py脚本执行完毕后你的项目目录下会多出一个名为chroma_db的文件夹这就是我们AI的“长期记忆体” 4.3 流程二构建问答检索管道 (app.py) 知识库已经建好现在我们要构建一个能使用这个知识库的问答系统。我们直接使用Streamlit来构建一个简单的Web界面。 在你的项目根目录创建一个名为app.py的文件并写入以下代码 import os import streamlit as st from dotenv import load_dotenvfrom langchain_community.embeddings.dashscope import DashScopeEmbeddings from langchain_chroma import Chroma from langchain_community.chat_models.tongyi import ChatTongyi from langchain.prompts import PromptTemplate from langchain.chains import RetrievalQA# 加载.env文件中的环境变量 load_dotenv()# --- 全局配置 --- CHROMA_PATH chroma_db PROMPT_TEMPLATE 请注意你是一个专业的AI助手你的任务是根据下面提供的“背景信息”来回答问题。 请严格依据“背景信息”的内容进行回答不要自行发挥或使用你的内部知识。 如果“背景信息”中没有足够的内容来回答问题请直接说“根据已有信息我无法回答该问题。”。 不允许在答案中添加任何非“背景信息”中的内容。背景信息: {context}问题: {question}请给出你的回答 def main():主函数构建Streamlit Web应用st.set_page_config(page_title阿威的AI知识库, page_icon)st.title( 阿威的AI知识库)st.markdown(你好我是你的AI助手。请在下方输入框中提出你关于已上传文档的问题。)st.cache_resourcedef initialize_components():if not os.path.exists(CHROMA_PATH):st.error(f错误向量数据库目录 {CHROMA_PATH} 不存在。请先运行 ingest.py 来创建数据库。)return None, Noneembeddings DashScopeEmbeddings(modeltext-embedding-v1)db Chroma(persist_directoryCHROMA_PATH, embedding_functionembeddings)llm ChatTongyi(model_nameqwen-turbo)return db, llmdb, llm initialize_components()if db is None or llm is None:returnretriever db.as_retriever()prompt PromptTemplate(templatePROMPT_TEMPLATE, input_variables[context, question])qa_chain RetrievalQA.from_chain_type(llmllm,chain_typestuff,retrieverretriever,return_source_documentsTrue,chain_type_kwargs{prompt: prompt})query st.text_input(请输入你的问题:, placeholder例如阿里巴巴开发手册里藏着什么宝贝)if st.button(提问):if not query:st.warning(请输入问题后再提问。)else:with st.spinner(AI正在思考中请稍候...):try:result qa_chain.invoke({query: query})st.subheader( AI的回答:)st.write(result[result])with st.expander(查看答案来源):for doc in result[source_documents]:st.info(f来源文件: {os.path.basename(doc.metadata.get(source, 未知))})st.write(doc.page_content)st.divider()except Exception as e:st.error(f在回答问题时发生错误: {e})if __name__ __main__:main()代码解析 st.cache_resource: Streamlit的缓存装饰器用于缓存模型加载、数据库连接等耗时操作避免重复执行提升应用响应速度。Chroma(...): 这里我们直接实例化Chroma类通过persist_directory从本地加载数据库。embedding_function是必须提供的因为Chroma需要用同一个Embedding模型来向量化用户的查询。ChatTongyi: LangChain对通义千问聊天模型的封装我们选择qwen-turbo模型以平衡性能和成本。PROMPT_TEMPLATE: 这是我们RAG系统的灵魂我们通过严格的指令为LLM设定了行为边界包括角色扮演、核心指令、兜底策略和幻觉抑制这直接决定了系统的可靠性。db.as_retriever(): 将ChromaDB实例转换为一个标准的LangChain Retriever对象它封装了所有检索逻辑。RetrievalQA.from_chain_type: LangChain提供的构建RAG应用的便捷Chain。chain_typestuff表示将检索到的所有文档片段全部“塞”进Prompt的{context}部分这是最直接的策略。 如何运行 注意 Streamlit应用有其专属的启动方式。你不能使用python app.py来运行它。 请在终端已激活虚拟环境中使用以下正确的命令来启动Web应用 streamlit run app.py执行该命令后你的浏览器会自动打开一个新标签页显示出我们应用的交互界面。现在你可以像使用聊天机器人一样输入你关于文档内容的问题然后点击“提问”按钮见证AI的强大能力。 示例 4.4 总结、挑战与展望 恭喜你你已经成功地从零开始构建并运行了一个功能完备、逻辑严谨的AI知识库问答系统。 让我们回顾一下我们所取得的成就 我们设计并实现了分离的知识注入和问答检索两大流程这是工程上的最佳实践。我们掌握了使用LangChain整合文档加载、文本分割、Embedding、向量存储的全过程。我们学会了如何构建一个高质量的RAG Prompt来约束LLM的行为抑制幻觉。我们成功地将**检索器Retriever和大语言模型LLM**通过RetrievalQA链无缝地结合在一起。我们还用Streamlit为我们的应用穿上了一件漂亮的“外衣”让它变得可用、可交互。 然而作为一个严谨的工程师我们也要清醒地认识到我们这个V1版本的系统还存在一些挑战和可优化的空间 检索质量: RAG系统的天花板取决于检索器能否找对相关的文档。如何优化检索效果是一个重要的课题。分块策略 (Chunking): chunk_size和chunk_overlap的设置对结果影响很大需要根据文档类型进行调整。成本与延迟: 在生产环境中需要对API调用和数据库查询的延迟与成本进行监控和优化。评估体系: 如何科学地评估问答系统的好坏这需要一套评估标准和数据集是AI应用工程化中的重要一环。 这些挑战也正是我们未来继续深入学习和探索的方向。 在本章之后你已经掌握了构建“知识型”AI应用的核心技能。在下一章我们将探索一个更令人兴奋的领域——AI智能体Agent。我们将赋予AI“手”和“脚”让它不再仅仅是“回答”问题而是能够“执行”任务成为一个真正能为你干活的“数字员工”。 实战之旅精彩继续。我们下期见。
http://www.pierceye.com/news/928860/

相关文章:

  • 电商设计素材网站推荐然后建设自营网站
  • 网站方案设计网页兼容性 网站开发
  • 做网站怎么申请域名游戏软件开发需要学什么
  • 做外贸网站需要什么卡创app开发 杭州app开发公司
  • 哪个网站可以做视频外链怎样退订3d卫星街景会员费用
  • 烟台做网站建设电话设置网站默认编码
  • seo官网制作规划绍兴seo整站优化
  • 怎么做网站广告设计学习
  • 邵东平台网站建设中山手机台app
  • 学什么可以做网站免费qq空间网站
  • 网站套餐到期啥意思电子商务电商网站饿建设
  • 电商网站零售客户重庆旅游景点
  • 建设银行成都官网招聘网站自主建网站
  • 云南省建设厅定额网站房地产开发公司是做什么的
  • 哪个网站卖自己做的手工艺品有哪些好的做网站公司好
  • 做电影网站用什么主机好最新网站域名
  • 唐山做网站公司汉狮价格搜索引擎禁止的方式优化网站
  • 做视频网站视频常见网站安全漏洞
  • 苏州企业名录黄页新乡网站自然优化
  • 有哪些建设网站公司网站建设需求单
  • 招聘网站做销售用手机网站做app
  • 做一个网站 多少钱撤销网站备案
  • 建设网站的流程图企业工资管理系统软件
  • 个人网站空间大小可以做网站的语言
  • 网站设计需要哪些技术wap购物网站源码
  • 一个空间两个php网站新能源车排名前十名
  • 如何建设公司门户网站建站仅向商家提供技术服务
  • 全国城建中心官方网站广州市品牌网站建设怎么样
  • 做百度移动端网站排名软件有哪些漫画做的好的网站好
  • 网站建设的基本条件crm和erp的区别