双非二本科生搞大模型应用开发(rag,agent)能找到工作吗,有钱途吗?

做向量的RAG肯定找不到工作,不为什么,就是过时了,Agent?那是人工智能编程的事。

不是套模板……

如果你能把RAG+Agent结合,那肯定能找到工作!

如何不用向量数据库也能做RAG?而是要用Agentic方法搞定了百万token文档检索……

这大把公司要的,因为你都能自己出来单干了!!!!

就说我之前调试一个法律文档检索系统。

客户的合同有800多页,切记800多页!

传统RAG的向量检索总是找不到关键条款——明明就在第523页的免责条款里,FAISS就是检索不出来。

搞了半天才发现,是文档分块把一个完整的条款切成了三段,向量相似度直接拉胯了。

这让我想起早前OpenAI悄悄更新的一个技术指南——他们居然说可以不用向量数据库做RAG。

刚看到的时候我是懵的,这不是反直觉吗?

但仔细研究后发现,还真别说,这个叫Agentic RAG的方法确实有点东西。

并且现在很多大公司都是追求高质量,Agent+RAG算是个新东西,主要是效果好……

尤其是专业领域,像法律、医疗、科技等等,全都需要……

RAG为什么不好?

去年做一个医疗知识库项目时,光是调试embedding模型就花了两周。你能想象吗?同一个问题"糖尿病能吃水果吗",用不同的embedding模型,检索出来的内容完全不一样:

  • text-embedding-ada-002:检索出糖尿病的定义(???)
  • BGE-large:找到了水果的营养成分(额…)
  • E5-large:终于找到了糖尿病饮食指南(总算靠谱了)

更郁闷的是分块策略。我试过:

  • 按段落分:上下文断裂严重
  • 按固定token分:经常把一句话切成两半
  • 按语义分:计算量大到怀疑人生

说起来都是泪。有次处理一份技术规范文档,里面有个重要的表格横跨了3页。传统分块直接把表格切碎了,用户问"性能指标是多少",系统返回了个表头…客户差点没把我骂死。

不要搞RAG,要搞就搞Agentic RAG

核心思路(其实很朴素)

之前GPT-4-turbo支持128K上下文后,我突然意识到一个问题:既然模型能一次看完整本《哈利波特》,为什么还要切块?

Agentic RAG的思路就像人类看书:

  1. 先快速翻一遍,知道大概讲什么
  2. 找到相关章节
  3. 仔细读那几页
  4. 得出答案

听起来简单?实现起来可不简单。

注意力机制的"隐形嵌入"

这里必须得说个技术细节(敲黑板)。很多人说Agentic RAG是"无嵌入"的,这其实是个误解。

Transformer的自注意力机制本质上就是在做动态嵌入:

\text{Attention}(Q, K, V) = \text{softmax}\left(\frac{QK^T}{\sqrt{d_k}}\right)V

Q、K、V这三个矩阵,不就是在为每个token生成上下文相关的表示吗?只不过这个"嵌入"是动态的、实时计算的,而不是预先存好的静态向量。

老公式了,看过的同学过一下就行……

顺便吐槽一下,当初读Attention Is All You Need这篇论文时,看到这个公式愣了半天。

后来debug transformer代码才真正理解——说白了就是让模型自己决定该关注哪些词。

接下来,你学到了,也能开干,也不愁没人要你!

照着写代码

第一版:能跑就行

上个月重构那个法律文档系统时,我先写了个最简单的版本:

import tiktoken
from openai import OpenAI

def quick_and_dirty_rag(document, question):
    """
    最简单的实现,能跑就行
    上次demo时就用的这个,客户看效果还不错
    """
    client = OpenAI()  # API key我放环境变量了
    
    # 直接把整个文档扔给GPT-4-turbo
    # 注意:这个真的很费钱!!!一次查询要好几美元
    response = client.chat.completions.create(
        model="gpt-4-turbo",
        messages=[
            {"role": "system", "content": "你是个文档分析专家"},
            {"role": "user", "content": f"文档:\n{document}\n\n问题:{question}"}
        ]
    )
    
    return response.choices[0].message.content

这版本虽然糙,但对于小文档真的好用。处理10页以内的合同,准确率贼高。

第二版:分层导航(开始认真了)

但是遇到几百页的文档就扛不住了。token太多,API直接报错。于是我实现了分层导航:

def smart_chunk_navigator(text, question, max_rounds=3):
    """
    模拟人类阅读:先看目录,再看章节,最后看段落
    
    这个函数我调了一个星期,各种边界情况处理起来巨麻烦
    比如有的文档没有明显的章节结构,只能按语义密度分割
    """
    tokenizer = tiktoken.get_encoding("cl100k_base")
    
    # 第一轮:粗分20个大块(经验值,太多会增加API调用次数)
    chunks = split_into_chunks(text, n=20)
    
    scratchpad = f"开始搜索:{question}"  # 记录推理过程,方便debug
    
    for round in range(max_rounds):
        # 让GPT选择相关的块
        selected_chunks = select_relevant_chunks(
            chunks, 
            question, 
            scratchpad
        )
        
        # 检查是否需要继续细分
        total_tokens = sum(len(tokenizer.encode(c)) for c in selected_chunks)
        
        if total_tokens < 2000:  # 够小了,可以深度分析
            break
            
        # 继续细分选中的块
        new_chunks = []
        for chunk in selected_chunks:
            # 每个大块再分5个小块
            sub_chunks = split_into_chunks(chunk, n=5)
            new_chunks.extend(sub_chunks)
        
        chunks = new_chunks
        scratchpad += f"\n第{round+1}轮:找到{len(chunks)}个相关段落"
    
    return selected_chunks, scratchpad

有个细节特别重要:scratchpad这个东西看起来简单,但它是实现多步推理的关键。

我一开始没加这个,导致GPT每轮都在重复搜索同样的内容,简直智障。

路由代理:最精髓的部分

整个系统最核心的是路由代理。

它决定了每一步该看文档的哪个部分:

class RoutingAgent:
    def __init__(self):
        self.client = OpenAI()
        # 这个prompt我改了不下20个版本
        # 最开始太复杂,GPT经常理解错
        # 现在这个版本简洁但有效
        self.system_prompt = """
        你是文档导航专家。分析用户问题,选择最可能包含答案的文档块。
        
        输出JSON格式:
        {
            "reasoning": "你的推理过程",
            "selected_chunks": [块的索引],
            "confidence": 0-1的置信度
        }
        
        记住:宁可多选几个块,也别漏掉关键信息。
        """
    
    def route(self, chunks, question, history=""):
        # 构建上下文(只包含每个块的前100字符预览)
        previews = [f"块{i}: {c[:100]}..." for i, c in enumerate(chunks)]
        
        prompt = f"""
        问题:{question}
        
        历史记录:{history}
        
        文档块预览:
        {chr(10).join(previews)}
        """
        
        response = self.client.chat.completions.create(
            model="gpt-4-turbo",
            messages=[
                {"role": "system", "content": self.system_prompt},
                {"role": "user", "content": prompt}
            ],
            response_format={"type": "json_object"},
            temperature=0  # 不要创造性,要稳定性
        )
        
        return json.loads(response.choices[0].message.content)

千万别小看temperature=0这个参数。

之前用默认值0.7,同一个问题每次选的块都不一样,搞得我怀疑是不是代码有bug。

合理中的意外:

坑1:上下文爆炸

最开始我太贪心,想一次处理整个文档。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

结果200页的PDF直接把API搞崩了。

错误信息:context_length_exceeded

老老实实分层处理。现在我的经验是:

  • 第一层:20-30个大块
  • 第二层:每个大块分5-10个小块
  • 第三层:如果还需要,再分段落

坑2:成本失控

去年11月,我跑了一个批量测试,1000个查询花了我600多美元…老板看到账单差点让我卷铺盖走人。

现在的优化策略:

  1. 缓存一切能缓存的:相同问题直接返回缓存结果
  2. 混合模式:简单问题用GPT-3.5,复杂的才上GPT-4
  3. 预过滤:如果文档小于5000 tokens,直接全文搜索
# 成本优化的核心代码
def cost_optimized_query(doc, question):
    # 先检查缓存
    cache_key = hashlib.md5(f"{doc[:100]}{question}".encode()).hexdigest()
    if cache_key in cache:
        print("命中缓存,省钱了!")
        return cache[cache_key]
    
    # 根据文档大小选择策略
    token_count = len(tokenizer.encode(doc))
    
    if token_count < 5000:
        # 小文档,直接上
        result = simple_rag(doc, question)
    elif token_count < 50000:
        # 中等文档,用GPT-3.5预筛选
        result = hybrid_rag(doc, question, model="gpt-3.5-turbo")
    else:
        # 大文档,完整的Agentic流程
        result = full_agentic_rag(doc, question)
    
    cache[cache_key] = result
    return result

坑3:答案幻觉

这个最头疼。有次系统非常自信地说"根据第15页的内容…",结果文档总共就10页。客户当场黑脸。

解决办法是加了个验证层:

def verify_answer(answer, source_chunks):
    """
    验证答案是否真的基于源文档
    这个函数救了我无数次
    """
    # 检查引用的页码/段落是否存在
    citations = extract_citations(answer)
    for citation in citations:
        if not citation_exists(citation, source_chunks):
            return False, f"虚假引用:{citation}"
    
    # 用另一个模型交叉验证
    verification_prompt = f"""
    答案:{answer}
    源文档:{source_chunks}
    
    这个答案是否完全基于源文档?是否有编造的内容?
    """
    
    # 用GPT-4做验证(贵但是值得)
    is_valid = verify_with_gpt4(verification_prompt)
    
    return is_valid

性能对比

上个月我做了个详细的对比测试,用的是公司的法律文档数据集(2000份合同):

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

看到这个数据,我的结论是:如果你追求准确性,预算充足,Agentic RAG真香。

如果要控制成本、延迟以及低要求,可以考虑RAG,真要精准度,就要变……

生产环境的优化

混合架构(最实用)

实际项目中,我现在都用混合架构:

class HybridRAG:
    def __init__(self):
        self.vector_store = FAISS()  # 传统向量检索
        self.agentic_engine = AgenticRAG()  # Agentic引擎
        
    def query(self, question, documents):
        # 第一步:用向量检索快速筛选
        candidates = self.vector_store.search(question, top_k=10)
        
        # 第二步:对候选文档用Agentic深度分析
        # 这样既快又准,成本也可控
        final_answer = self.agentic_engine.deep_analyze(
            question,
            candidates
        )
        
        return final_answer

这个方案在我们生产环境跑了3个月,效果很稳定。

平均延迟1.5秒,成本降低了60%,准确率还提升了15%。

智能缓存策略

class SmartCache:
    def __init__(self):
        self.semantic_cache = {}  # 语义相似的问题共享答案
        self.exact_cache = {}     # 完全相同的问题直接返回
        
    def get(self, question):
        # 精确匹配
        if question in self.exact_cache:
            return self.exact_cache[question]
        
        # 语义匹配(用embedding计算相似度)
        similar_q = self.find_similar_question(question)
        if similar_q and self.similarity(question, similar_q) > 0.95:
            print(f"语义缓存命中:{similar_q[:50]}...")
            return self.semantic_cache[similar_q]
        
        return None

真实案例:法律文档分析系统

分享一个上个月刚上线的真实项目。客户是一家律所,需要分析大量的并购协议。

需求很变态:

  1. 每份协议200-500页
  2. 需要提取所有的关键条款(终止条件、保密协议、赔偿条款等)
  3. 准确率要求>95%
  4. 必须有准确的引用来源

传统RAG试了一个月,准确率始终在80%徘徊。主要问题是:

  • 条款经常跨页
  • 法律术语的向量表示不准确
  • 上下文依赖严重

改用Agentic RAG后:

class LegalDocumentAnalyzer:
    def __init__(self):
        self.clause_patterns = {
            "termination": ["终止", "解除", "期满", "breach", "terminate"],
            "confidentiality": ["保密", "机密", "不披露", "NDA"],
            "liability": ["责任", "赔偿", "损失", "indemnity"]
        }
        
    def analyze_contract(self, contract_text, query_type):
        # 1. 智能分段(保持条款完整性)
        sections = self.parse_legal_structure(contract_text)
        
        # 2. 多轮导航找到相关条款
        relevant_clauses = []
        scratchpad = f"搜索{query_type}相关条款"
        
        for round in range(3):  # 最多3轮
            candidates = self.navigate_to_clauses(
                sections, 
                query_type,
                scratchpad
            )
            
            # 验证条款完整性
            for clause in candidates:
                if self.is_complete_clause(clause):
                    relevant_clauses.append(clause)
                else:
                    # 扩展搜索范围,获取完整条款
                    expanded = self.expand_context(clause, sections)
                    relevant_clauses.append(expanded)
            
            scratchpad += f"\n第{round+1}轮找到{len(candidates)}个条款"
            
            if len(relevant_clauses) >= 3:  # 找够了
                break
        
        # 3. 生成结构化报告
        report = self.generate_legal_report(
            relevant_clauses,
            query_type,
            include_citations=True
        )
        
        return report

上线后效果:

  • 准确率达到96.8%
  • 处理一份300页文档约45秒
  • 每份文档成本约$0.8(客户能接受)

客户反馈最满意的是引用准确性——每个结论都能精确定位到具体页码和段落。

正在尝试的优化

  1. 知识图谱增强:先用LLM构建文档的知识图谱,然后基于图结构导航。初步测试效果不错,但构建图谱的成本有点高。
  2. 自适应深度控制:根据问题复杂度自动决定导航深度。简单问题1-2轮搞定,复杂问题可能需要4-5轮。
  3. 多模态支持:很多文档包含表格、图表。正在试验用GPT-4V处理这些内容。

一些思考

做了这么久RAG,我觉得核心问题不是用不用向量数据库,而是如何让AI更好地理解文档结构和上下文关系。

这个也是人工智能当中,能否做到高质量项目的根本思维,你一味只会CV,其实真的不可以……

Agentic RAG的本质是把检索变成了推理

它不是简单地找相似内容,而是像人一样思考:“要回答这个问题,我需要看文档的哪些部分?”

这种方法确实更贵、更慢,但对于高价值场景(法律、医疗、金融),准确性的提升是值得的。

写在最后

Agentic RAG很好,但是我的建议:

  1. 小文档(<10页):直接全文输入,简单粗暴效果好
  2. 中等文档(10-100页):用Agentic RAG,性价比最高
  3. 大规模文档库(>1000份):混合架构,向量检索+Agentic精读
  4. 实时性要求高和低质要求:还是老老实实用传统RAG

上周和同事讨论这个技术,面试的人根本不知道变通。

同时,这一套技术真的是很挑企业。

要么肯花钱,要么就是肯花钱本地部署。

所以说学对技术,就等于是选对企业,不用愁找不到工作……

对了,我开圈了,有什么难题可以到哪提问,不管多难都可以: 全能解决难题异圈

如果你也想系统学习AI大模型技术,想通过这项技能真正达到升职加薪,就业或是副业的目的,但是不知道该如何开始学习*_,因为网上的资料太多太杂乱了,如果不能系统的学习就相当于是白学。
为了帮助大家打破壁垒,快速了解大模型核心技术原理,学习相关大模型技术。从原理出发真正入局大模型。在这里我和MoPaaS魔泊云联合梳理打造了系统大模型学习脉络,这份 LLM大模型资料 分享出来:包括LLM大模型书籍、640套大模型行业报告、LLM大模型学习视频、LLM大模型学习路线、开源大模型学习教程等, 😝有需要的小伙伴,可以 扫描下方二维码免费领取🆓**⬇️⬇️⬇️

在这里插入图片描述

【大模型全套视频教程】

教程从当下的市场现状和趋势出发,分析各个岗位人才需求,带你充分了解自身情况,get 到适合自己的 AI 大模型入门学习路线。

从基础的 prompt 工程入手,逐步深入到 Agents,其中更是详细介绍了 LLM 最重要的编程框架 LangChain。最后把微调与预训练进行了对比介绍与分析。

同时课程详细介绍了AI大模型技能图谱知识树,规划属于你自己的大模型学习路线,并且专门提前收集了大家对大模型常见的疑问,集中解答所有疑惑!

在这里插入图片描述

深耕 AI 领域技术专家带你快速入门大模型

跟着行业技术专家免费学习的机会非常难得,相信跟着学习下来能够对大模型有更加深刻的认知和理解,也能真正利用起大模型,从而“弯道超车”,实现职业跃迁!

在这里插入图片描述

【精选AI大模型权威PDF书籍/教程】

精心筛选的经典与前沿并重的电子书和教程合集,包含《深度学习》等一百多本书籍和讲义精要等材料。绝对是深入理解理论、夯实基础的不二之选。

在这里插入图片描述

【AI 大模型面试题 】

除了 AI 入门课程,我还给大家准备了非常全面的**「AI 大模型面试题」,**包括字节、腾讯等一线大厂的 AI 岗面经分享、LLMs、Transformer、RAG 面试真题等,帮你在面试大模型工作中更快一步。

【大厂 AI 岗位面经分享(92份)】

图片

【AI 大模型面试真题(102 道)】

图片

【LLMs 面试真题(97 道)】

图片

【640套 AI 大模型行业研究报告】

在这里插入图片描述

【AI大模型完整版学习路线图(2025版)】

明确学习方向,2025年 AI 要学什么,这一张图就够了!

img

👇👇点击下方卡片链接免费领取全部内容👇👇

在这里插入图片描述

抓住AI浪潮,重塑职业未来!

科技行业正处于深刻变革之中。英特尔等巨头近期进行结构性调整,缩减部分传统岗位,同时AI相关技术岗位(尤其是大模型方向)需求激增,已成为不争的事实。具备相关技能的人才在就业市场上正变得炙手可热。

行业趋势洞察:

  • 转型加速: 传统IT岗位面临转型压力,拥抱AI技术成为关键。
  • 人才争夺战: 拥有3-5年经验、扎实AI技术功底真实项目经验的工程师,在头部大厂及明星AI企业中的薪资竞争力显著提升(部分核心岗位可达较高水平)。
  • 门槛提高: “具备AI项目实操经验”正迅速成为简历筛选的重要标准,预计未来1-2年将成为普遍门槛。

与其观望,不如行动!

面对变革,主动学习、提升技能才是应对之道。掌握AI大模型核心原理、主流应用技术与项目实战经验,是抓住时代机遇、实现职业跃迁的关键一步。

在这里插入图片描述

01 为什么分享这份学习资料?

当前,我国在AI大模型领域的高质量人才供给仍显不足,行业亟需更多有志于此的专业力量加入。

因此,我们决定将这份精心整理的AI大模型学习资料,无偿分享给每一位真心渴望进入这个领域、愿意投入学习的伙伴!

我们希望能为你的学习之路提供一份助力。如果在学习过程中遇到技术问题,也欢迎交流探讨,我们乐于分享所知。

*02 这份资料的价值在哪里?*

专业背书,系统构建:

  • 本资料由我与MoPaaS魔泊云的鲁为民博士共同整理。鲁博士拥有清华大学学士美国加州理工学院博士学位,在人工智能领域造诣深厚:

    • 在IEEE Transactions等顶级学术期刊及国际会议发表论文超过50篇
    • 拥有多项中美发明专利。
    • 荣获吴文俊人工智能科学技术奖(中国人工智能领域重要奖项)。
  • 目前,我有幸与鲁博士共同进行人工智能相关研究。

在这里插入图片描述

内容实用,循序渐进:

  • 资料体系化覆盖了从基础概念入门核心技术进阶的知识点。

  • 包含丰富的视频教程实战项目案例,强调动手实践能力。

  • 无论你是初探AI领域的新手,还是已有一定技术基础希望深入大模型的学习者,这份资料都能为你提供系统性的学习路径和宝贵的实践参考助力你提升技术能力,向大模型相关岗位转型发展

    在这里插入图片描述在这里插入图片描述在这里插入图片描述

抓住机遇,开启你的AI学习之旅!

在这里插入图片描述

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员一粟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值