做网站二级域名随便用吗智能营销系统开发

张小明 2026/1/10 9:22:17
做网站二级域名随便用吗,智能营销系统开发,网站导航栏三根横线怎么做的,旅游网站建设网站推广1. 前言 在上篇文章中[「LLM Agent在Text2SQL应用上的实践」]介绍了基于AI Agent来优化LLM的Text2SQL转换效果的实践#xff0c;除此之外我们还可以使用RAG#xff08;Retrieval-Augmented Generation#xff09;来优化大模型应用的效果。本文将从以下4个方面探讨通过RAG来…1. 前言在上篇文章中[「LLM Agent在Text2SQL应用上的实践」]介绍了基于AI Agent来优化LLM的Text2SQL转换效果的实践除此之外我们还可以使用RAGRetrieval-Augmented Generation来优化大模型应用的效果。本文将从以下4个方面探讨通过RAG来优化LLM的Text2SQL转换效果。RAG概述基于LangChain的RAG实现RAG优化Text2SQL应用的实践后续计划2. RAG概述2.1 RAG概念RAGRetrieval-Augmented Generation检索增强生成即大模型LLM在回答问题或生成文本时会先从大量的文档中检索出相关信息然后基于这些检索出的信息进行回答或生成文本从而可以提高回答的质量而不是任由LLM来发挥。RAG技术使得开发者没有必要为每个特定的任务重新训练整个大模型只需要外挂上相关知识库就可以即可为模型提供额外的信息输入提高回答的准确性。RAG技术工作流程如下图所示。2.2 RAG能解决LLM的哪些问题即使在LLM有较强的解决问题的能力仍然需要RAG技术的配合因为能够帮助解决LLM存在的以下几个问题。1模型幻觉问题LLM文本生成的底层原理是基于概率进行生成的在没有已知事实作为支撑的情况下不可避免的会出现一本正经的胡说八道的情况。而这种幻觉问题的区分是比较困难的因为它要求使用者自身具备相应领域的知识。2知识的局限性模型自身的知识完全源于它的训练数据而现有的主流大模型ChatGPT、文心一言、通义千问…的训练集基本都是构建于网络公开的数据对于一些实时性的、非公开的或离线的数据是无法获取到的这部分知识也就无从具备。3数据安全问题开源的大模型是没有企业内部数据和用户数据的如果企业想在保证数据安全的前提下使用LLM一种比较好的解决办法就是把数据放在本地企业数据的业务计算全部放在本地完成。而在线的LLM只是完成一个归纳总结的作用。2.3 RAG架构RAG的架构如图中所示简单来讲RAG就是通过检索获取相关的知识并将其融入Prompt让大模型能够参考相应的知识从而给出合理回答。因此可以将RAG的核心理解为“检索生成”前者主要是利用向量数据库的高效存储和检索能力召回目标知识后者则是利用大模型和Prompt工程将召回的知识合理利用生成目标答案。完整的RAG应用流程主要包含两个阶段1数据准备阶段数据提取–文本分割–向量化embedding–数据入库2应用阶段用户提问–数据检索检索–注入Prompt增强–LLM生成答案生成。下面我们详细介绍一下各环节的技术细节和注意事项2.3.1 数据准备阶段数据准备一般是一个离线的过程主要是将私域数据向量化后构建索引并存入数据库的过程。主要包括数据提取、文本分割、向量化、数据入库等环节。数据提取o 数据加载包括多格式数据加载、不同数据源获取等根据数据自身情况将数据处理为同一个范式。o 数据处理包括数据过滤、压缩、格式化等。o 元数据获取提取数据中关键信息例如文件名、Title、时间等。文本分割文本分割主要考虑两个因素1embedding模型的Tokens限制情况2语义完整性对整体的检索效果的影响。一些常见的文本分割方式如下o 句分割以”句”的粒度进行切分保留一个句子的完整语义。常见切分符包括句号、感叹号、问号、换行符等。o 固定长度分割根据embedding模型的token长度限制将文本分割为固定长度例如256/512个tokens这种切分方式会损失很多语义信息一般通过在头尾增加一定冗余量来缓解。向量化Embedding向量化是一个将文本数据转化为向量矩阵的过程该过程会直接影响到后续检索的效果。目前常见的Embedding模型基本能满足大部分需求但对于特殊场景例如涉及一些罕见专有词或字等或者想进一步优化效果则可以选择开源Embedding模型微调或直接训练适合自己场景的Embedding模型。数据入库数据向量化后构建索引并写入数据库的过程可以概述为数据入库过程适用于RAG场景的数据库包括FAISS、Chromadb、Milvus、ES等。一般可以根据业务场景、硬件、性能需求等多因素综合考虑选择合适的数据库。2.3.2 应用阶段在应用阶段我们根据用户的提问通过高效的检索方法召回与提问最相关的知识并融入Prompt大模型参考当前提问和相关知识生成相应的答案。关键环节包括数据检索、注入Prompt等。数据检索Retrieval****常见的数据检索方法包括相似性检索、全文检索等根据检索效果一般可以选择多种检索方式融合提升召回率。o相似性检索即计算查询向量与所有存储向量的相似性得分返回得分高的记录。常见的相似性计算方法包括余弦相似性、欧氏距离、曼哈顿距离等。o 全文检索全文检索是一种比较经典的检索方式在数据存入时通过关键词构建倒排索引在检索时通过关键词进行全文检索找到对应的记录比如ES。注入PromptAugmented****Prompt作为大模型的直接输入是影响模型输出准确率的关键因素之一。在RAG场景中Prompt一般包括任务描述、背景知识检索得到、任务指令一般是用户提问等根据任务场景和大模型性能也可以在Prompt中适当加入其他指令优化大模型的输出。LLM****生成Generation****在这个阶段我们将经过检索增强的提示内容输入到大语言模型LLM中以生成所需的输出。这个过程是RAG的核心它利用LLM的强大生成能力结合前两个阶段的信息从而生成准确、丰富且与上下文相关的输出。3. 基于LangChain的RAG实现3.1 LangChain中RAG模块LangChain有许多组件用于帮助构建RAG应用程序。为了熟悉这些内容我们将在网络文本数据源上构建一个简单的问答应用程序。在此过程中我们将介绍一个典型的问答架构讨论相关LangChain组件的使用其工作流程如图。3.2 基于LangChain实现RAG我们将在Lilian Weng的「LLMPowered Autonomous Agents」博客文章基础上构建一个QA应用程序该应用程序允许我们就文章内容提出问题。1.加载文档首先需要收集并加载数据可以利用LangChain提供的众多 DocumentLoader之一来加载这些数据。这里的Document是一个包含文本和元数据的字典为了加载文本我们可以使用LangChain的 WebBaseLoader来加载Web url只有加载类为“post-content”、“post-title”或“post-header”的HTML标记内容。import bs4 from langchain_community.document_loaders import WebBaseLoader # Only keep post title, headers, and content from the full HTML. bs4_strainer bs4.SoupStrainer(class_(post-title, post-header, post-content)) loader WebBaseLoader( web_paths(https://lilianweng.github.io/posts/2023-06-23-agent/,), bs_kwargs{parse_only: bs4_strainer}, ) docs loader.load()2.文档切分由于原始状态下的Document可能过长无法适应大语言模型LLM的上下文窗口所以我们需要将其分成更小的部分。LangChain内置许多该功能的文本分割器。在这个简单的示例中我们可以使用RecursiveCharacterTextSplitter递归地分割文档直到每个块的大小合适。这是推荐用于一般文本用例的文本拆分器。设置chunk_size约为1000和chunk_overlap约为200增加一定的冗余量以保持块之间的文本连续性。from langchain.text_splitter import RecursiveCharacterTextSplitter text_splitter RecursiveCharacterTextSplitter( chunk_size1000, chunk_overlap200, add_start_indexTrue ) all_splits text_splitter.split_documents(docs)3.向量存储需要为每个块生成向量embedding并将其存储在向量数据库或向量存储中。为了生成向量embedding我们可以使用OpenAI的embedding模型。同时我们可以使用Chroma向量数据库来存储这些embedding。通过调用.from_documents()方法生成向量存储对象。from langchain_community.embeddings import OpenAIEmbeddings from langchain_community.vectorstores import Chroma vectorstore Chroma.from_documents(documentsall_splits, embeddingOpenAIEmbeddings())4.检索Retrieval在检索过程中系统接受用户问题搜索与该问题相关的文档将检索到的文档和初始问题传递给模型并返回答案。最常见的检索器类型是VectorStoreRetriever它使用向量存储的相似性搜索功能来简化检索。使用VectorStore.as_retriever()任何VectorStore都可以很容易地转换为Retriever。retriever vectorstore.as_retriever(search_typesimilarity, search_kwargs{k: 6})5.增强Augmented接下来需要使用检索到的上下文信息来增强我们的提示。为此我们需要准备一个提示模板。在LangChain中我们可以使用ChatPromptTemplate来创建一个提示模板。这个模板会告诉LLM如何使用检索到的上下文来回答问题。from langchain import hub prompt hub.pull(rlm/rag-prompt)生成的ChatPromptTemplate为You are an assistant for question-answering tasks. Use the following pieces of retrieved context to answer the question. If you dont know the answer, just say that you dont know. Use three sentences maximum and keep the answer concise. Question: {question} Context: {context} Answer:6.LLM****生成回答Generation最后需要构建一个RAG流程链将检索器、提示模板和LLM连接起来。定义好RAG链后我们就可以调用它进行生成。这里使用OpenAI的gpt-3.5-turbo模型其他LangChain LLM或ChatModel也可以进行替代。from langchain.chat_models import ChatOpenAI from langchain.schema.runnable import RunnablePassthrough from langchain.schema.output_parser import StrOutputParser llm ChatOpenAI(model_namegpt-3.5-turbo, temperature0) rag_chain ( {context: retriever, question: RunnablePassthrough()} | prompt | llm | StrOutputParser() ) rag_chain.invoke(What is Task Decomposition?)输出结果Task decomposition is a technique used to break down complex tasks into smaller and simpler steps. It involves transforming big tasks into multiple manageable tasks, allowing for a more systematic and organized approach to problem-solving. Thanks for asking!原文内容如图4. RAG优化Text2SQL应用的实践4.1 现有问题依然以上篇文中「大模型LLM在Text2SQL上的应用实践」的数据库Chinook为例需求为统计“连续两个月都下订单的客户有哪些”示例代码可参考上文。结果如下可以看出生成的SQL不准确只统计了最近两个月中都下订单的客户和统计需求不相符。那如何解决这个问题4.2 RAG****解决方案尽管SQLToolkit包含处理数据库所需的工具但通常情况下一些额外的工具可能对扩展代理的功能有用。当试图在解决方案中使用特定领域的知识以提高其整体性能时这一点尤其有用。我们使用问题列表few-shotexamples作为外部知识库为了参考该知识库我们需要一个利用向量数据库的自定义检索工具以便检索语义上与用户问题相似的示例。**1.**创建的问题列表few-shot example如下few_shots { How many employees are there?: SELECT COUNT(*) FROM employee;, 在订单表中连续两个月都下订单的客户有哪些?:SELECT DISTINCT a.CustomerId, a.FirstName, a.LastName FROM Customer a JOIN Invoice b ON a.CustomerId b.CustomerId JOIN Invoice c ON a.CustomerId c.CustomerId AND ((strftime(%Y-%m, b.InvoiceDate) strftime(%Y-%m, date(c.InvoiceDate, -1 month))) OR (strftime(%Y-%m, b.InvoiceDate) strftime(%Y-%m, date(c.InvoiceDate, 1 month)))), 同一客户的订单中连续两笔订单金额都大于1的客户有哪些?:SELECT DISTINCT c.CustomerId, c.FirstName, c.LastName FROM Invoice a JOIN Invoice b ON a.CustomerId b.CustomerId AND a.InvoiceId b.InvoiceId JOIN Customer c ON a.CustomerId c.CustomerId WHERE a.Total 1 AND b.Total 1 AND NOT EXISTS ( SELECT 1 FROM Invoice i WHERE i.CustomerId a.CustomerId AND i.InvoiceId a.InvoiceId AND i.InvoiceId b.InvoiceId), }**2.**可以使用问题列表创建一个检索器将目标SQL查询分配为元数据from langchain.schema import Document from langchain_community.embeddings.openai import OpenAIEmbeddings from langchain_community.vectorstores import FAISS embeddings OpenAIEmbeddings() few_shot_docs [ Document(page_contentquestion, metadata{sql_query: few_shots[question]}) for question in few_shots.keys() ] vector_db FAISS.from_documents(few_shot_docs, embeddings) retriever vector_db.as_retriever()**3.**现在可以创建自定义工具并将其作为新工具附加到create_sql_agent函数中from langchain_community.agent_toolkits import create_retriever_tool # description注意要加 in Chinese,使用中文检索,切记! tool_description This tool will help you understand similar examples to adapt them to the user question in Chinese. Input to this tool should be the user question. retriever_tool create_retriever_tool( retriever, namesql_get_similar_examples, descriptiontool_description ) custom_tool_list [retriever_tool]**4.**创建代理根据我们的示例调整标准SQL Agent的后缀。尽管处理此问题的最直接方法是仅将其包含在上一步骤的“tool_description”中但这通常是不够的我们需要在agent prompt中使用构造函数的“suffix”参数来指定它。from langchain.agents import AgentType, create_sql_agent from langchain_community.agent_toolkits import SQLDatabaseToolkit from langchain_community.chat_models import ChatOpenAI from langchain_community.utilities import SQLDatabase db SQLDatabase.from_uri(sqlite:///xxxx/Chinook.db) llm ChatOpenAI(model_namegpt-4, temperature0) toolkit SQLDatabaseToolkit(dbdb, llmllm) # 注意要加 in Chinese,使用中文检索,切记! custom_suffix I should first get the similar examples in Chinese I know. If the examples are enough to construct the query, I can build it. Otherwise, I can then look at the tables in the database to see what I can query. Then I should query the schema of the most relevant tables agent create_sql_agent( llmllm, toolkittoolkit, verboseTrue, agent_typeAgentType.OPENAI_FUNCTIONS, extra_toolscustom_tool_list, suffixcustom_suffix, )**5.**执行提问agent.run(连续两个月都有下订单的客户有哪些?)结果如下效果生成的SQL与结果基本满足我们的需求。首先使用sql_get_similar_examples工具来检索类似的示例。由于该问题与few-shot examples中的示例相似因此不需要使用Toolkit中的任何其他工具从而节省了时间和tokens。6.换个相似的问题提问agent.run(找出哪些客户连续两个月都有下订单?)结果如下**效果**生成的SQL与结果基本满足我们的需求。5. 后续计划本文详细介绍了检索增强生成RAG的概念并演示如何利用LangChain实现RAG流程以及通过RAG来扩展SQLAgent的功能进一步优化Text2SQL应用的效果。可以看到RAG为解决LLM在处理特定、最新和专有信息方面的不足提供了一个有效且灵活的方法使其生成更精确、更贴合上下文的答案有效减少误导性信息的产生。后续我们可以将数据管理中的元数据信息作为域内专业知识提供给大模型借助RAG进一步提示LLM应用的效果。如何学习大模型 AI 由于新岗位的生产效率要优于被取代岗位的生产效率所以实际上整个社会的生产效率是提升的。但是具体到个人只能说是“最先掌握AI的人将会比较晚掌握AI的人有竞争优势”。这句话放在计算机、互联网、移动互联网的开局时期都是一样的道理。我在一线互联网企业工作十余年里指导过不少同行后辈。帮助很多人得到了学习和成长。我意识到有很多经验和知识值得分享给大家也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限很多互联网行业朋友无法获得正确的资料得到学习提升故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。第一阶段10天初阶应用该阶段让大家对大模型 AI有一个最前沿的认识对大模型 AI 的理解超过 95% 的人可以在相关讨论时发表高级、不跟风、又接地气的见解别人只会和 AI 聊天而你能调教 AI并能用代码将大模型和业务衔接。大模型 AI 能干什么大模型是怎样获得「智能」的用好 AI 的核心心法大模型应用业务架构大模型应用技术架构代码示例向 GPT-3.5 灌入新知识提示工程的意义和核心思想Prompt 典型构成指令调优方法论思维链和思维树Prompt 攻击和防范…第二阶段30天高阶应用该阶段我们正式进入大模型 AI 进阶实战学习学会构造私有知识库扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架抓住最新的技术进展适合 Python 和 JavaScript 程序员。为什么要做 RAG搭建一个简单的 ChatPDF检索的基础概念什么是向量表示Embeddings向量数据库与向量检索基于向量检索的 RAG搭建 RAG 系统的扩展知识混合检索与 RAG-Fusion 简介向量模型本地部署…第三阶段30天模型训练恭喜你如果学到这里你基本可以找到一份大模型 AI相关的工作自己也能训练 GPT 了通过微调训练自己的垂直大模型能独立训练开源多模态大模型掌握更多技术方案。到此为止大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗为什么要做 RAG什么是模型什么是模型训练求解器 损失函数简介小实验2手写一个简单的神经网络并训练它什么是训练/预训练/微调/轻量化微调Transformer结构简介轻量化微调实验数据集的构建…第四阶段20天商业闭环对全球大模型从性能、吞吐量、成本等方面有一定的认知可以在云端和本地等多种环境下部署大模型找到适合自己的项目/创业方向做一名被 AI 武装的产品经理。硬件选型带你了解全球大模型使用国产大模型服务搭建 OpenAI 代理热身基于阿里云 PAI 部署 Stable Diffusion在本地计算机运行大模型大模型的私有化部署基于 vLLM 部署大模型案例如何优雅地在阿里云私有部署开源大模型部署一套开源 LLM 项目内容安全互联网信息服务算法备案…学习是一个过程只要学习就会有挑战。天道酬勤你越努力就会成为越优秀的自己。如果你能在15天内完成所有的任务那你堪称天才。然而如果你能完成 60-70% 的内容你就已经开始具备成为一名大模型 AI 的正确特征了。这份完整版的大模型 AI 学习资料已经上传CSDN朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

西安网站开发费用wordpress 活动报名

Windsurf集成FLUX.1-dev:构建下一代AI创作生态 在创意设计领域,我们正经历一场由生成式AI驱动的范式变革。过去,设计师需要在多个工具间切换——用Stable Diffusion生成初稿,靠BLIP描述图像内容,再手动调整细节。这种割…

张小明 2025/12/29 6:28:13 网站建设

房地产建设项目网站农村自建房设计图片大全

EmotiVoice语音风格库建设倡议:共建公共情感音色池 在虚拟主播的一场直播中,观众突然收到一条系统通知:“检测到当前剧情紧张,请切换至‘危机模式’语音。”下一秒,原本平稳的AI解说瞬间转为急促、低沉而充满压迫感的语…

张小明 2025/12/25 23:09:50 网站建设

做网站实现登陆功能郑州网站建设招聘

文章目录前言1. USART1.1. 配置串口1.1.1. 配置通讯协议1.1.2. 配置串口中断1.2. 发送数据1.3. 读取数据2. 寄存器编程实验3. 总结前言 开发板为:野火指南者,基于STM32F103VET6分析的例程为:指南者\1-程序源码_教程文档\2-[野火]《STM32 HAL…

张小明 2025/12/25 23:07:49 网站建设

企业开发网站建设哪家好广州全网推广

一提到截图软件吧,有的使用QQ截图,有的是微信截图,对于大部分人来说,QQ和微信自带的截图功能已经非常多了,用着很方便。今天就给大家安排一款超级专业的截图软件,它的功能也非常的多,有需要的小…

张小明 2025/12/31 18:21:19 网站建设

wordpress在这个站点注册网站建设亇金手指下拉排名亅

解析 React Native 的“重排”痛点:Yoga 布局引擎是如何在 C 层模拟 Flexbox 的?各位技术同仁,大家好!今天,我们将深入探讨 React Native 应用开发中一个核心但又常被忽视的性能瓶颈——“重排”(re-layout…

张小明 2025/12/31 21:01:39 网站建设