长春市长春网站建设网网站做推广赚钱项目
2026/4/6 7:48:57 网站建设 项目流程
长春市长春网站建设网,网站做推广赚钱项目,精神文明建设专题网站,app开发公司价格表检索增强生成#xff08;Retrieval-Augmented Generation, RAG#xff09;正在改变大型语言模型#xff08;LLMs#xff09;利用外部知识的方式。问题在于许多开发者误解了 RAG 的实际作用。他们关注存储在向量数据库中的文档#xff0c;并认为所有的“魔法”始于此、终于…检索增强生成Retrieval-Augmented Generation, RAG正在改变大型语言模型LLMs利用外部知识的方式。问题在于许多开发者误解了 RAG 的实际作用。他们关注存储在向量数据库中的文档并认为所有的“魔法”始于此、终于此但这完全是错误的。索引和检索根本不是一回事。索引在于你如何选择表示的知识。检索在于模型可以看到哪些部分的知识。一旦你了解到了这个差异整个思路就会很清晰就会明白自己对模型的推理、速度和基础性有多大的控制权。什么是 RAG 索引RAG 索引是检索的基础。它是将原始知识转化为可经由相似性查询搜索的数值数据的过程。这些数值数据被称为嵌入embeddings嵌入捕获的是含义而不仅仅是表面的文本。可以将其视为构建一个可搜索的知识库语义地图。每个知识块、摘要或查询变体都成为地图上的一个点。地图组织得越好当用户提问时你的检索器就能越好地识别出相关的知识。如果你的索引出了问题例如知识块太大、嵌入捕捉到了噪音或者数据的表示没有反映用户的意图那么再好的 LLM 也帮不了你多少。检索的质量始终取决于数据索引的有效性而不是你的机器学习模型有多优秀。为什么它很重要你检索到的内容并不一定是你索引的内容。你的 RAG 系统的力量在于你的索引能否有效地反映含义而非文本。索引明确了你的检索器看待知识的框架。当你将索引策略与你的数据和用户需求相匹配时检索会变得更精确模型将减少幻觉用户将获得准确的补全。一个设计良好的索引能将 RAG 从一个检索管道转变为一个真正的语义推理引擎。真正有效的 RAG 索引策略假设我们有一篇关于 Python 编程的文档文档是一种多功能编程语言广泛应用于数据科学、机器学习和开发。它支持多种编程范式并拥有、和等丰富的库生态系统。现在让我们探讨何时有效地使用每种 RAG 索引策略以及如何为构建高性能检索系统而实现这些策略。1. 块索引Chunk Indexing这是大多数 RAG 管道的起点。你将大型文档拆分成更小的、语义连贯的块并使用某个嵌入模型对每个块进行嵌入。然后这些嵌入被存储在一个向量数据库中。示例代码# 1. Chunk Indexing def chunk_indexing(document, chunk_size100): words document.split() chunks [] current_chunk [] current_len 0 for word in words: current_len len(word) 1# 1 for space current_chunk.append(word) if current_len chunk_size: chunks.append( .join(current_chunk)) current_chunk [] current_len 0 if current_chunk: chunks.append( .join(current_chunk)) chunk_embeddings [embed(chunk) for chunk in chunks] return chunks, chunk_embeddings chunks, chunk_embeddings chunk_indexing(doc_text, chunk_size50) print(Chunks:\n, chunks)核心逻辑是将文档按字数或字符数分割成多个块然后对每个块生成嵌入向量。最佳实践对于短篇文本始终将块保持在200-400 个 Token左右对于长篇技术内容可保持在500-800 个 Token。确保避免在句中或段落中间进行分割使用逻辑性的、语义上的断点以获得更好的分块效果。最好使用20-30% 的重叠窗口以确保在边界处不会丢失上下文。权衡块索引是简单且通用的索引方式。然而更大的块可能会损害检索精度而更小的块可能会分散上下文并用不连贯的片段使 LLM 感到不知所措。2. 子块索引Sub-chunk Indexing子块索引是在块索引基础上进行精炼的一层。在嵌入正常知识块时你会将知识块进一步划分成更小的子块。在进行检索时你将子块与查询进行比较一旦子块匹配你的查询完整的父块就会作为输入传递给 LLM。这种方法有效的原因子块使你能够以一种更精确、更微妙、更准确的方式进行搜索同时保留了你进行推理所需的大上下文。例如你可能有一篇长篇研究文章而该文章中某一部分内容的子块可能就是长段落中某个公式的解释从而提高了精度和可解释性。# 2. Sub-chunk Indexingdef sub_chunk_indexing(chunk, sub_chunk_size25): words chunk.split() sub_chunks [] current_sub_chunk [] current_len 0 for word in words: current_len len(word) 1 current_sub_chunk.append(word) if current_len sub_chunk_size: sub_chunks.append( .join(current_sub_chunk)) current_sub_chunk [] current_len 0 if current_sub_chunk: sub_chunks.append( .join(current_sub_chunk)) return sub_chunks# Sub-chunks for first chunk (as example)sub_chunks sub_chunk_indexing(chunks[0], sub_chunk_size30)sub_embeddings [embed(sub_chunk) for sub_chunk in sub_chunks]print(Sub-chunks:\n, sub_chunks)何时使用对于每个段落中包含多个不同观点的数据集会很有优势例如知识库、教科书、研究文章等会是理想的选择。权衡由于嵌入有所重叠预处理和存储成本略高但它在查询和内容之间的对齐方面有实质性的提升。3. 查询索引Query Indexing在查询索引的情况下原始文本不会被直接嵌入。相反我们会生成针对每个知识块的几个假想问题然后嵌入这些问题文本。这样做部分是为了弥合用户提问方式与文档描述事物方式之间的语义鸿沟。例如如果你的知识块说“LangChain 拥有用于构建 RAG 管道的实用工具”模型会生成类似这样的查询我如何在 LangChain 中构建 RAG 管道LangChain 有哪些用于检索的工具# 3. Query Indexing - generate synthetic queries related to the chunkdef generate_queries(chunk): # Simple synthetic queries for demonstration queries [ What is Python used for?, Which libraries does Python support?, What paradigms does Python support? ] query_embeddings [embed(q) for q in queries] return queries, query_embeddingsqueries, query_embeddings generate_queries(doc_text)print(Synthetic Queries:\n, queries)然后当任何真实用户提出类似问题时检索将直接命中其中一个索引的查询。最佳实践在编写索引查询时建议使用 LLM 为每个知识块生成3-5 个查询。你也可以对所有相似的问题进行去重或聚类以缩小实际索引的规模。何时使用问答系统或大多数用户交互都由自然语言问题驱动的聊天机器人。用户很可能会询问“是什么”、“如何做”或“为什么”等类型查询的搜索体验。权衡虽然合成扩展增加了预处理时间和空间但它为面向用户的系统提供了有意义的检索相关性提升。4. 摘要索引Summary Indexing摘要索引允许你在嵌入之前将资料片段重构成更小的摘要。你将完整的原始内容保留在另一个位置然后在摘要版本上执行检索。这种方法的好处结构化、密集或重复的源材料例如电子表格、政策文件、技术手册通常是直接从原始文本嵌入会捕获噪音的材料。摘要抽象掉了不那么相关的表面细节对于嵌入而言语义上更有意义。例如原始文本说“2020 年至 2025 年的温度读数范围为 22 至 42 摄氏度异常归因于厄尔尼诺现象。” 摘要将是“年度温度趋势2020-2025涉及厄尔尼诺相关的异常现象。” 摘要表示形式将焦点集中在概念上。示例代码# 4. Summary Indexingdef summarize(text): # Simple summary for demonstration (replace with an actual summarizer for real use) ifPythonin text: returnPython: versatile language, used in data science and web development with many libraries. return textsummary summarize(doc_text)summary_embedding embed(summary)print(Summary:, summary)何时使用处理结构化数据表格、CSV、日志文件。技术性或冗长的内容如果使用原始文本嵌入嵌入效果会不佳。权衡如果摘要过于抽象可能会有损失细微差别/事实准确性的风险。对于特定领域尤其是法律、金融等的关键研究应链接到原始文本进行参考。5. 分层索引Hierarchical Indexing分层索引将信息组织成多个不同级别文档、章节、段落、子段落。你分阶段进行检索从广泛的介绍开始逐步缩小到特定的上下文。顶层组件检索相关文档的章节下一层检索在这些检索到的文档章节内的特定上下文的段落或子段落。这意味着什么分层检索可以减少系统中的噪音并且在你需要控制上下文大小时非常有用。当处理大量文档且无法一次性全部拉取时这尤其有用。它还可以提高后续分析的可解释性因为你可以知道是哪个文档的哪个部分促成了最终答案。示例代码# 5. Hierarchical Indexing # Organize document into levels: document - chunks - sub-chunks hierarchical_index { document: doc_text, chunks: chunks, sub_chunks: {chunk: sub_chunk_indexing(chunk) for chunk in chunks} } print(Hierarchical index example:) print(hierarchical_index)最佳实践使用多个嵌入级别或嵌入与关键词搜索的组合。例如最初仅使用 BM25 检索文档然后使用嵌入更精确地检索那些相关的块或组件。何时使用拥有数千份文档的企业级 RAG。从书籍、法律档案或技术 PDF 等长篇来源中检索。权衡由于需要多个检索级别复杂性增加。还需要额外的存储和预处理来进行元数据/摘要。由于多步骤检索查询延迟增加不适合大型非结构化数据。6. 混合索引Hybrid Indexing / Multi-Modal知识不仅仅存在于文本中。在混合索引形式中RAG 通过做两件事来处理多种形式的数据或模态检索器使用针对每种可能模态专门化或调优的不同编码器生成的嵌入。然后它从每个相关的嵌入中获取结果并使用评分策略或**晚期融合late-fusion**方法将它们结合起来生成响应。以下是其用法的示例使用CLIP 或 BLIP处理图像和文本标题。使用CodeBERT 或 StarCoder嵌入来处理代码。示例代码# 6. Hybrid Indexing (example with text image)# Example text and dummy image embedding (replace embed_image with actual model)def embed_image(image_data): # Dummy example: image data represented as length of string (replace with CLIP/BLIP encoder) return [len(image_data) / 1000]text_embedding embed(doc_text)image_embedding embed_image(image_bytes_or_path_here)print(Text embedding size:, len(text_embedding))print(Image embedding size:, len(image_embedding))何时使用混合索引处理包含图像或图表的技术手册或文档。多模态文档或支持文章。产品目录或电子商务。权衡检索逻辑和存储模型更为复杂但在响应中能提供更丰富的上下文理解并在领域内具有更高的灵活性。成功的 RAG 系统取决于针对数据类型和待回答问题的适当索引策略。索引指导着检索器找到什么以及语言模型将以什么为基础进行生成使其成为超越检索的关键基础。你使用的索引类型可能是块、子块、查询、摘要、分层或混合索引并且该索引应遵循数据中存在的结构这将提高相关性并消除噪音。精心设计的索引过程将减少幻觉并提供一个准确、值得信赖的系统。如何学习大模型 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%免费】

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

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

立即咨询