网站开发公司排行榜个体做外贸的网站
2026/3/7 14:23:29 网站建设 项目流程
网站开发公司排行榜,个体做外贸的网站,网站建设合同性质,郑州公司建站模板没有一条帆船能吹动自己行驶#xff0c;它需要外面的风。 – 因可觅《量子离歌》 大模型的训练数据有截止日期#xff0c;在此之后的事它不知道#xff1b;大模型的参数量有限#xff0c;无法容纳所有专业知识。也就是说#xff0c;大模型在实时性和专业性上都有所欠缺。 …没有一条帆船能吹动自己行驶它需要外面的风。 – 因可觅《量子离歌》大模型的训练数据有截止日期在此之后的事它不知道大模型的参数量有限无法容纳所有专业知识。也就是说大模型在实时性和专业性上都有所欠缺。如何让大模型变得实时且专业呢最省力的方法是“打小抄”。知识库就像大模型的“小抄”。在回答问题之前先瞅一眼小抄看有没有与问题相关的内容。如果有就从知识库中取回这段内容结合大模型的推理能力生成最终答案。这里「打小抄」的动作就是RAGRetrieval-Augmented Generation, 检索增强生成。Note:使用知识库可以让大模型的回答有据可依、减少幻觉代价是需要承担知识库的构建成本。尤其当知识库的规模较大时有必要想想是否值得支付对价。毕竟通过扩大知识库的方式提升 Agent 性能多少有点「用有限对抗无限用确定对抗不确定」的意思。虽然我们总是在提起 RAG 时提到知识库但 RAG 是一种检索技术它可以检索任何内容。比起检索需要手动构建的知识库用来检索联网内容、历史对话也是可以的而且性价比很高。一、提示词模板RAG 做的事情并不复杂就是从知识库中召回与用户问题有关的内容作为上下文注入到提示词模板 (Prompt Template)中。下面是一个提示词模板{context}---基于上面给出的上下文回答问题。问题{question}回答使用该模板时将召回文本填入{context}将用户问题填入{question}。然后把填好的提示词模板交给大模型推理。RAG 主要做了两件事一是从知识库中召回与用户问题有关的文本二是使用提示词模板拼接召回文本与用户问题。拼接很容易做到难度主要集中在召回上。在下一小节中我将介绍如何召回与用户问题有关的文本。二、向量检索完成「召回与用户问题有关的文本」这件事需要用到检索器。实现检索器的方式有 很多比如基于关键词检索的 BM25 算法但本节主要介绍基于 Embedding 的检索方法向量检索。1从文本向量化说起Embedding 是一种将文本转为向量的技术。它的输入是一段文本输出是一个定长的向量。好喜欢你 -- [0.190012, 0.123555, .... ]将文本转为向量的目的是把语义相近的词分配到同一片向量空间。所以一对近义词转成向量后它们的向量之间的距离通常比其他词更近。比如足球和篮球在向量空间中的距离更近一些而足球和篮筐之间的距离更远。Embedding 的本质是压缩。从编码角度讲自然语言存在冗余信息。Embedding 相当于对自然语言进行重编码用最少的 token 表达最多的语义。Embedding 在多语言场景下也有优势。经过充分训练的 Embedding 模型会将多语言内容在语义层面上对齐。也就是说一个向量可以在多语言环境中保持同一语义。这种特性让大模型得以兼容并包。即使加入多语言材料也不会因为字面上的词不同而产生“理解”上的混乱。2向量检索的原理由于 Embedding 模型具有将相似语义的词训练成距离相近的向量的特性我们可以把「用户问题」与「知识库内容」都转成 Embedding 向量。然后计算向量之间的距离。向量之间的距离越小则语料之间的相似度越高。借助这个原理最后返回知识库中与问题向量距离最小的 Top-K 份语料即可。我们用一个简单的实验验证这种计算方式能否获取真正的相关文本。from dotenv import load_dotenvfrom langchain_community.embeddings import DashScopeEmbeddingsfrom sklearn.metrics.pairwise import cosine_similarity# 加载环境变量_ load_dotenv()下面计算知识库中每一条内容与问题之间的相似度看看语义相近的内容是否具有更高的余弦相似度。# 用户问题query 过年要给不熟的亲戚发红包么# 知识库docs [ 不来往的人就不要给他钱, 海胆豆腐真好吃下次还吃, 半熟牛排淋上不熟的芝士,]# 初始化向量生成器embeddings DashScopeEmbeddings()# 生成向量qv embeddings.embed_query(query)dv embeddings.embed_documents(docs)# 计算余弦相似度similarities cosine_similarity([qv], dv)[0]results list(enumerate(similarities))by_sim sorted(results, keylambda r: r[1], reverseTrue)# 余弦相似度大 - 两个单位向量夹角小 - 向量挨得更近print(按余弦相似度排序)for i, s in by_sim: print(-, docs[i], s)输出结果按余弦相似度排序- 不来往的人就不要给他钱 0.346204651165491- 半熟牛排淋上不熟的芝士 0.11805922713791331- 海胆豆腐真好吃下次还吃 0.09085072283609508三、向量检索流程上述代码虽然已经可以计算知识库内容与用户问题的相似度但在工程化过程中还会遇到一些问题问题一Embedding 模型对输入文本有长度限制且文本过长本身也会影响向量表达问题二当知识库规模较大时难以快速召回 Top-K 相关文本为了解决问题一我们需要做文本切块Split into chunks将知识库中的文本切成大小均匀的文本片段。然后使用 Embedding 模型将这些文本片段转成 Embedding 向量。为了确保文本片段不会因截断产生语义缺失还要让两个相邻文本片段之间有一定的 overlap。问题二一般引入向量数据库解决向量数据库有成熟的 ANN 算法可以帮助我们快速召回最近邻向量。工程化之后我们的检索流程变得更复杂了一些。下面是一个典型的 向量检索流程* 圆框代表数据方框代表组件。由于 LangChain 使用模块化的编写方式所以每个组件都是可替换的。下面粗体部分列出了图中的组件右边是它们可替换的变体Document Loader文档加载器TextLoader,PyMuPDFLoader,WebBaseLoaderDocument Splitter文档分割器RecursiveCharacterTextSplitterEmbedding Generation向量生成器DashScopeEmbeddings,HuggingFaceEmbeddingsVector Store向量存储Chroma,Milvus,FAISSRetriever检索器EnsembleRetriever,BM25RetrieverLLM大语言模型ChatOpenAI下一小节我们将实现一个包含上述全部组件的向量检索流程。四、基于向量检索的 RAG☝️ 仅需六个步骤就能实现一个基于向量检索的 RAG。import os# 配置 UAMY_USER_AGENT ( Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.0 Safari/605.1.15)os.environ[USER_AGENT] MY_USER_AGENTimport bs4from dotenv import load_dotenvfrom langchain_openai import ChatOpenAIfrom langchain_community.document_loaders import WebBaseLoaderfrom langchain_text_splitters import RecursiveCharacterTextSplitterfrom langchain_community.embeddings import DashScopeEmbeddingsfrom langchain_core.vectorstores import InMemoryVectorStorefrom langchain.tools import toolfrom langchain.agents import create_agent# 加载模型配置_ load_dotenv()# 加载模型llm ChatOpenAI( modelqwen3-max, api_keyos.getenv(DASHSCOPE_API_KEY), base_urlos.getenv(DASHSCOPE_BASE_URL),)1加载文档使用WebBaseLoader加载 《阿里发布新版 Quick BI聊聊 ChatBI 的底层架构、交互设计和云计算生态》 这篇文章的内容。# 加载文章内容bs4_strainer bs4.SoupStrainer(class_(post))loader WebBaseLoader( web_paths(https://luochang212.github.io/posts/quick_bi_intro/,), bs_kwargs{parse_only: bs4_strainer}, requests_kwargs{headers: {User-Agent: MY_USER_AGENT}},)docs loader.load()assert len(docs) 1print(fTotal characters: {len(docs[0].page_content)})print(docs[0].page_content[:248])2分割文档使用RecursiveCharacterTextSplitter将文本分块以便后续计算文本块的 Embedding。# 文本分块text_splitter RecursiveCharacterTextSplitter( chunk_size1000, # chunk size (characters) chunk_overlap200, # chunk overlap (characters) add_start_indexTrue, # track index in original document)all_splits text_splitter.split_documents(docs)print(fSplit blog post into {len(all_splits)} sub-documents.)3向量生成注意用户问题 和 知识库 必须使用同一个 Embedding 模型来生成向量。# 初始化向量生成器embeddings DashScopeEmbeddings()4向量存储这里仅用InMemoryVectorStore做演示。正式项目请用 Chroma、Milvus 等向量数据库。# 初始化内存向量存储vector_store InMemoryVectorStore(embeddingembeddings)# 将文档添加到向量存储document_ids vector_store.add_documents(documentsall_splits)print(document_ids[:2])5创建工具创建可被 Agent 调用的工具。该工具从向量存储中召回k2个与query最相似的文本片段。# 创建上下文检索工具tool(response_formatcontent_and_artifact)def retrieve_context(query: str): Retrieve information to help answer a query. retrieved_docs vector_store.similarity_search(query, k2) serialized \n\n.join( (fSource: {doc.metadata}\nContent: {doc.page_content}) for doc in retrieved_docs ) return serialized, retrieved_docs6召回文本使用 Agent 调用检索工具召回与问题有关的上下文。# 创建 ReAct Agentagent create_agent( llm, tools[retrieve_context], system_prompt( # If desired, specify custom instructions You have access to a tool that retrieves context from a blog post. Use the tool to help answer user queries. ))# 调用 Agentresponse agent.invoke({ messages: [{role: user, content: 当前的 Agent 能力有哪些局限性}]})# 获取 Agent 的最终回复response[messages][-1].pretty_print()输出结果[1m Ai Message [0m当前的 Agent 能力存在以下几个主要局限性1. **长期记忆能力不足** Agent 难以有效地区分和保留有用的历史对话信息同时遗忘无用内容。此外还缺乏跨对话积累经验、持续提升问答效果的能力。2. **验证Verification能力缺失** 即使具备一定的记忆能力Agent 仍缺乏对信息真伪或合理性的判断能力。它无法自主验证所获取或生成的信息是否准确可靠。3. **知识体系构建困难** 在没有良好验证机制的前提下Agent 无法将零散的记忆系统化地加工成结构化的知识体系从而限制了其推理和决策能力。这些问题是当前基于 Agent 技术的产品如 Quick BI、TRAE 等共同面临的瓶颈。未来随着 Agent 技术在上述方向上的突破相关应用例如 ChatBI的能力也有望显著提升。五、关键词检索BM25 是一种基于词频的排序算法它可以估计文档与给定查询的相关性。给定一个包含关键词 的查询 文档 的 BM25 分数是其中关键词 在文档 中出现的次数文档 的词数文档集合的平均文档长度可调参数用于控制词频饱和度通常选择为可调参数用于控制文档归一化程度通常选择为关键词 的 IDF逆文档频率权重用于衡量一个词的普遍程度越常见的词值越低对于中文关键词检索需要安装支持分词的 Python 包1创建检索器我们使用 LangChain 提供的 BM25Retriever 创建检索器并将 jieba 作为它的分词器。import jiebafrom langchain_community.retrievers import BM25Retrieverfrom langchain_core.documents import Document plaintext def chinese_tokenize(text: str) - list[str]: 中文分词函数 tokens jieba.lcut(text) return [token for token in tokens if token.strip()]# 1. 使用文本创建中文检索器text_retriever BM25Retriever.from_texts( [ 何意味, 那很坏了, 这点小事也无所谓吧, 我替她原谅你了, ], k2, preprocess_funcchinese_tokenize,)# 2. 使用文档创建中文检索器doc_retriever BM25Retriever.from_documents( [ Document(page_content辣椒炒肉拌面), Document(page_content肉蛋葱鸡), Document(page_content这下不熟了), Document(page_content铁串子), ], k2, preprocess_funcchinese_tokenize,)2使用检索器检索文本text_retriever.invoke(一件小事)输出结果[Document(metadata{}, page_content这点小事也无所谓吧), Document(metadata{}, page_content我替她原谅你了)]检索文档doc_retriever.invoke(拌面)输出结果[Document(metadata{}, page_content辣椒炒肉拌面), Document(metadata{}, page_content铁串子)]六、混合检索向量检索和关键词检索各擅胜场。向量检索擅长语义匹配关键词检索擅长精确匹配两者可以形成互补。因此工业界的 RAG 系统常用向量检索 关键词检索的混合检索方案。这相当于有两路召回混合检索的关键在于如何对两路召回的结果进行筛选和重排Rerank。1RRF 分数RRFReciprocal Rank Fusion, 倒数排序融合是一种经典的重排方案。你可以使用 RRF 集成多个检索器分数以计算文本片段的最终排名。一个文本片段的 RRF 分数可由以下公式计算得出其中第 个检索器的权重默认值为平滑参数默认值为文档在第 个检索器中的排名基于 RRF 分数的混合检索可以通过向量数据库实现详情参见文档这里不再赘述了MilvusChroma2Agentic Hybrid Search根据第一性原理若用大模型可以获得更好的重排效果何须计算 RRF 分数。下面我们写一段实验代码验证一下用大模型做重排的效果。import randomfrom typing import Listfrom pydantic import BaseModel, Field# 这是用户 queryquery 盘点海獭的黑历史# 这是 向量检索 召回的文本片段dense_texts [ 某些海洋生物会乱扔垃圾, 海獭太可爱了, 海獭臭臭的,]# 这是 关键词检索 召回的文本片段sparse_texts [ 海獭臭臭的, 雪鸮的黑历史,]# 定义 Agent 输出格式class ReRankOutput(BaseModel): indices: List[int] Field(description重排后的召回文本片段的索引列表)# 返回最多 limit 个文本片段def get_relevant_texts(query: str, dense_texts: list, sparse_texts: list, limit: int 3): # 创建上下文 texts dense_texts sparse_texts # 去重 texts list(set(texts)) # 打乱元素顺序消除由位置引入的 bias random.shuffle(texts) # 将索引 id 显式添加到文本片段前 texts_with_index [f{i} - {text}for i, text in enumerate(texts)] context \n\n.join(texts_with_index) prompt \n.join([ f{context}, ---, 上面是RAG召回的多个文本片段。每个文本片段的格式为 [索引] - [内容]。, f请返回最多{limit}个与用户问题有关的文本片段的索引若相关性内容不足允许少于{limit}条。, \n注意事项, 1. 相关性更高的文本片段应该排在前面, 2. 返回的文本片段必须有助于回答用户问题, f\n用户问题{query}, 文本片段的索引列表, ]) # 创建带结构化输出的Agent agent create_agent( modelllm, system_prompt你是一个召回文本相关性重排助手, response_formatReRankOutput, ) # 调用 Agent result agent.invoke( {messages: [{role: user, content: prompt}]}, ) indices result[structured_response].indices return [texts[i] for i in indices]调用召回文本相关性重排助手获取重排后的相关性文本列表。res get_relevant_texts( query, dense_texts, sparse_texts,)res输出结果[海獭臭臭的, 海獭太可爱了]七、RAG 架构RAG 有三种主流架构架构描述2-Step RAG先检索再生成Agentic RAG使用 Agent 控制检索的时机与方式Hybrid RAG在 Agentic RAG 的基础上增加用户 query 改写确认召回文本的相关性等步骤Note官方文档的 架构部分 写得很好推荐阅读。12-Step RAG2Agentic RAG3Hybrid RAG八、网络搜索网络搜索本身是一个很重的服务它包含三项核心任务网页爬取、网页索引和网页检索。网页索引几乎只能由大公司完成。即使 SearXNG 这样的开源检索方案也只是聚合第三方搜索引擎如必应、搜狗的结果没有独立索引能力。因此即使独立开发网络搜索功能也难以绕开大公司的服务。不如一开始就老老实实用大公司的 API来获取搜索结果。下面展示使用 DashScope 联网搜索的方法和效果。首先安装 dashscopepip install dashscope只需要将Generation.call函数的网络参数enable_search设为True就能接入互联网。下面把这个函数做成工具供 Agent 调用。from dashscope import Generationtooldef dashscope_search(query: str) - str: 使用夸克搜索 API 搜索互联网信息。 response Generation.call( modelqwen3-max, promptquery, enable_searchTrue, result_formatmessage ) if response.status_code 200: return response.output.choices[0].message.content else: return ( Search failed with status code: f{response.status_code}, message: {response.message} )# 创建 Agentagent create_agent( modelllm, tools[dashscope_search], system_prompt你是一个智能助手回答前必须使用工具搜索互联网信息,)# 运行 Agentresponse agent.invoke( {messages: [{ role: user, content: 告诉我今天的日期以及今天最重要的一条新闻 }]}) plaintext # 获取 Agent 的全部回复for message in response[messages]: message.pretty_print()输出结果 Human Message 告诉我今天的日期以及今天最重要的一条新闻 Ai Message Tool Calls: dashscope_search (call_0d753c0e020d457f9309a5) Call ID: call_0d753c0e020d457f9309a5 Args: query: 今天的日期 dashscope_search (call_d714a572adba4037b921eb) Call ID: call_d714a572adba4037b921eb Args: query: 今天最重要的一条新闻 Tool Message Name: dashscope_search今天的日期是**2025年12月28日星期日**。 Tool Message Name: dashscope_search截至**2025年12月28日**今天最重要的一条新闻是### **美国宣布将对中国部分半导体产品加征301关税但设置18个月缓冲期至2027年6月**#### 核心要点- **事件背景**美东时间12月23日美国贸易代表办公室发布针对中国半导体政策的“301调查”结果认定中方相关产业政策“损害美国利益”决定对包括晶体管、集成电路、二极管、放大器等关键半导体产品加征关税。- **特殊安排****当前税率为0%**但**2027年6月起将提高税率**。这一“延迟生效”机制被广泛解读为美方在施压与维稳之间寻求平衡。- **中方回应**12月25日中国商务部发言人**何咏前**在例行发布会上**严正交涉**强调 - 不认同美方301调查结论 - 坚决反对单边加征关税 - 指出此举违反WTO规则扰乱全球芯片供应链“损人不利己” - 若美方一意孤行中方将采取必要反制措施。- **战略意义**此举动发生在中美2025年11月刚达成“关税休战”仅一个多月后标志着美国对华经贸策略进入“**施压—休战循环**”的新阶段也凸显半导体作为科技竞争核心领域的战略地位。该事件不仅关乎中美双边关系走向更可能对**全球半导体产业链、科技企业布局及2026年关键缓和窗口期**产生深远影响因此被视为今日最具全局性影响的国际新闻。 Ai Message 今天的日期是2025年12月28日星期日。今天最重要的一条新闻是关于美国宣布将对中国部分半导体产品加征301关税的决定但同时设置了18个月的缓冲期至2027年6月。具体来说美方认定中国相关产业政策“损害美国利益”因此决定对包括晶体管、集成电路、二极管、放大器等关键半导体产品加征关税。然而当前税率为0%直到2027年6月才会提高税率。对此中国商务部发言人何咏前在例行发布会上表示不认同美方301调查结论并坚决反对单边加征关税指出此举违反WTO规则且扰乱全球芯片供应链。若美方执意推行中方将采取必要反制措施。这一事件不仅影响中美双边关系也可能对全球半导体产业链和科技企业布局产生深远影响。本文节选自《LangGraph 1.0 完全指南》如果你觉得本文还不错点击「阅读原文」打开原版电子书↓如何学习大模型 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%免费】

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询