在这里插入图片描述

炸裂副标题:还在用"黑盒模式"跑RAG?这篇文章把LlamaIndex向量索引查询引擎的"加载-切分-嵌入-检索-生成"流水线彻底拆解开,手把手教你避开新手最常踩的六大天坑,从"跑通Demo"直通"生产级调优",少走三个月弯路!

向量索引查询引擎
LlamaIndex核心实战

向量索引
RAG的“默认配置”

文档加载与切分
砌好每一块砖

Embedding模型
别让检索鸡同鸭讲

Top-K与相似度
精准比数量重要

查询引擎组装
从零件到整车

调优与进阶
从能用到好用

文字目录

  1. 向量索引:RAG的"默认配置"
  2. 文档加载与切分:砌好每一块砖
  3. Embedding模型:别让检索"鸡同鸭讲"
  4. Top-K与相似度:精准比数量重要
  5. 查询引擎组装:从零件到整车
  6. 调优与进阶:从能用到好用

嗨,大家好呀,我是你的老朋友精通代码大仙。接下来我们一起学习 《大模型RAG生成式AI开发实战》22.[第3章 LlamaIndex实战] 向量索引查询引擎:最常用的RAG检索方式

俗话说得好,“万丈高楼平地起,一砖一瓦皆根基”。可现在不少兄弟学RAG,恨不得今天看完Hello World,明天就手搓一个ChatGPT。结果呢?Agent倒是搭得有模有样,可最基础的问答都错漏百出,问东答西,幻觉满天飞。为啥?因为向量索引查询引擎这个RAG的"默认配置"被你忽略了。它是LlamaIndex里最常用、最核心的检索方式,也是绝大多数生产环境的标配。你要是这关没过,后面那些花活儿都是空中楼阁。别急,今天大仙就带你把这"第一座山头"给啃下来。

1. 向量索引:RAG的"默认配置"

点题

咱们先把这个概念给捋顺了。啥叫向量索引查询引擎?说白了,它就是一套"先转存、后匹配"的流水线。你把一堆文档塞给它,它先把文档切成小段,把每段文字通过Embedding模型转成高维向量,存进一个向量库里。等用户来提问时,它把问题也转成向量,然后在库里找"离得最近"的那几个向量,把对应的文本块捞出来,拼成一个Prompt送给大模型,让大模型基于这些上下文来回答。

这套打法,就是现在业界最主流的RAG范式。LlamaIndex里的VectorStoreIndex,就是这套范式的官方代言人。

用户提问

Query Embedding向量化

向量库相似度检索

召回Top-K相关段落

构建System Prompt + Context

LLM生成最终回答

你看,这张图就是它的完整工作流。理解了这个,你就抓住了RAG的七寸。

痛点分析

可很多新手兄弟在这个环节就栽了。咋栽的?心太急,把RAG当成一个"黑盒魔法"。网上抄一段代码,VectorStoreIndex.from_documents一跑,问个问题,出答案了,就觉得自己"会了"。

结果一上线,问题来了:为啥我问"公司的年假制度",它给我回答"报销流程"?为啥文档明明里有这段内容,它就是检索不到?

我看过太多这样的案例了。有位兄弟,把公司内部50多份PDF直接扔进了VectorStoreIndex,用的是默认配置,然后就开始抱怨"LlamaIndex真不准"。我问他:"你文档怎么切的?Embedding用的哪个模型?Top-K设的多少?"他三连摇头。这就好比把一整袋面粉直接倒进了烤箱,然后怪烤箱做不出蛋糕。向量索引不是黑洞,不是啥都往里塞就能吐金子的。

还有个更典型的误区:混淆了IndexQuery Engine。有人以为创建了index就完事了,其实index只是那本"字典",而query_engine才是那个"查字典并且组织语言回答问题"的人。你字典再厚,不会查也是白搭。

解决方案

那正确的姿势是什么?先走通最小闭环,再逐层拆解。

第一步,明确你的数据流:Documents -> Nodes -> Index -> QueryEngine -> Response

第二步,把关键参数显式地写出来,别藏在默认配置里当鸵鸟。给你一个最简洁、但五脏俱全的入门模板:

from llama_index.core import VectorStoreIndex, SimpleDirectoryReader, Settings
from llama_index.embeddings.huggingface import HuggingFaceEmbedding

# 1. 先设置全局Embedding模型(后面会细讲)
Settings.embed_model = HuggingFaceEmbedding(model_name="BAAI/bge-small-zh-v1.5")

# 2. 加载文档
documents = SimpleDirectoryReader("./data").load_data()

# 3. 构建向量索引(这里会自动完成切分和向量化)
index = VectorStoreIndex.from_documents(documents)

# 4. 组装查询引擎(关键参数显式指定)
query_engine = index.as_query_engine(
    similarity_top_k=3  # 先召回3个最相关的片段
)

# 5. 提问
response = query_engine.query("请总结这篇文章的核心观点")
print(response)

你看,这段代码虽然短,但它把核心链路暴露得很清楚。你出问题的时候,至少知道是去查documents的加载,还是去调similarity_top_k,而不是对着一个黑盒干瞪眼。

这样做的好处是,你手里有了"地图"。加载出问题,看SimpleDirectoryReader;切分出问题,看node_parser;向量出问题,看embed_model;检索出问题,看query_engine的参数。定位问题从"大海捞针"变成了"按图索骥"。

小结

向量索引查询引擎不是黑魔法,而是一条标准流水线。理解它的"加载-切分-嵌入-检索-生成"五步曲,是你后续一切调优的地基。

2. 文档加载与切分:砌好每一块砖

点题

如果说向量索引是一栋大楼,那文档切分就是砌砖。砖切得稀碎或者大小不均,楼盖起来也得漏风。在LlamaIndex里,这一步由NodeParser负责,最常见的就是SentenceSplitter。它的任务很简单:把长文档切成一段段有独立语义的小块(Node),让每一块都能被Embedding模型正确理解,被检索器正确召回。

你别小看这一步。我见过太多项目,RAG效果不好,根子全出在切分上。

40% 25% 20% 10% 5% RAG效果不佳的常见原因分布 文档切分不合理 Embedding模型不匹配 Top-K与检索策略问题 Prompt与合成方式问题 其他因素

这张饼图虽然是我根据经验拟的数据,但"文档切分不合理"占比最高,这一点毫不夸张。

痛点分析

新手最容易犯的错,就是"一刀切"和"不重叠"。

什么叫一刀切?不管文档类型,不管内容边界,chunk_size设个1024,chunk_overlap设个0,直接开跑。这下可好,一份Python教程,一个函数定义被拦腰斩断,def calculate_price(在第一个chunk里,price, tax):在第二个chunk里。用户问这个函数怎么用,检索回来半拉函数,LLM看了都懵:“这语法也不完整啊,让我咋解释?”

还有个兄弟处理产品说明书,表格里的内容被切得七零八落。第一行是"型号:X100",第二行跑到了下一个chunk。用户问"X100的参数是啥",检索回来的chunk里只有"型号:X100",参数全在隔壁chunk里,因为overlap=0,老死不相往来。

另外一种极端是chunk_size设得巨大,一个chunk塞进去五千字。你以为这样上下文完整了?错!Embedding模型对过长文本的表征能力会稀释,就好像把一整本书浓缩成一个标签,检索时根本抓不住重点。而且chunk太大,召回的数量受限,容易漏掉其他关键信息。

解决方案

LlamaIndex其实给了咱们很多把"手术刀",别只用默认的"菜刀"。

对于普通文本、文章、报告,推荐用SentenceSplitter。它不是按固定字符切,而是尽量在句子边界下刀,保证语义完整。参数上,chunk_size一般512到1024是个甜点区(具体看你Embedding模型的最大输入),chunk_overlap建议设为50到200,也就是10%到20%的重叠。这样就算在边界处切了一刀,前后文也能通过重叠部分衔接上。

from llama_index.core.node_parser import SentenceSplitter
from llama_index.core import VectorStoreIndex

# 用手术刀,不用菜刀
parser = SentenceSplitter(
    chunk_size=512,
    chunk_overlap=50,
    separator=" "  # 按空格和标点智能切分
)

# 先得到节点,再构建索引
nodes = parser.get_nodes_from_documents(documents)
index = VectorStoreIndex(nodes)

如果你的文档里大量是代码,那就得上CodeSplitter,它能按函数、类、方法这些代码块来切,保证语法结构完整。如果是Markdown文档,MarkdownNodeParser能按标题层级切,让一块内容自带层级信息。

这样做的好处立竿见影:召回回来的每一个chunk都是"自给自足"的语义单元,LLM拿到手就能看懂,不用靠猜。

小结

文档切分是RAG里最沉默的成本中心,它默默决定了你效果的天花板。砖砌得方正规整,后面的墙才立得稳。

3. Embedding模型:别让检索"鸡同鸭讲"

点题

文档切好了,下一步就是把这些文本块"翻译"成向量。这个翻译官,就是Embedding模型。它负责把人类语言映射到一个高维数学空间里,语义相近的句子,在这个空间里距离就近。向量索引查询引擎后续所有的"相似度检索",本质上都是在向量空间里找"邻居"。

所以,这个翻译官的水平,直接决定了你的检索是不是在"鸡同鸭讲"。

痛点分析

新手在这个环节的误区,主要集中在"默认万岁"和"中英不分"。

很多人直接跑LlamaIndex,连Settings.embed_model都没碰过,用的要么是默认配置,要么随手塞了个模型。我见过最离谱的案例:一个做中文客服问答的兄弟,用的Embedding模型是在纯英文语料上训练的。结果用户问"怎么退款",文档里明明有"退货退款流程说明",可向量算出来的相似度低得可怜,根本进不了Top-K。为啥?因为英文模型对中文语义的刻画本身就是"外语水平",它把"退款"和"报销"算得贼近,却把"退款"和"退货"算得老远。

还有一种情况,是模型和向量维度没对齐。比如向量库初始化时按768维建的,结果你换了个384维的轻量化模型,一查询直接报错dimension mismatch。新手当场就慌了,以为是LlamaIndex的Bug,其实只是你换了翻译官,却没跟仓库报备。

更有甚者,不考虑模型与硬件的匹配,本地跑个十几B的超大Embedding模型,电脑风扇转得跟直升机似的,索引构建慢如蜗牛,还抱怨"RAG性能不行"。

解决方案

选Embedding模型,牢记三个原则:语种匹配、场景匹配、硬件匹配

中文场景,目前社区验证过性价比最高的,首推BAAI的BGE系列,比如BAAI/bge-large-zh-v1.5或者bge-small-zh-v1.5。如果追求极致效果且机器有GPU,上bge-large;如果资源紧张,bge-small也能打。英文场景可以选BAAI/bge-large-en-v1.5,或者直接用OpenAI的text-embedding-3-large。通用多语言可以试试intfloat/multilingual-e5-large

在LlamaIndex里配置也很简单:

from llama_index.embeddings.huggingface import HuggingFaceEmbedding
from llama_index.core import Settings

# 指定翻译官
Settings.embed_model = HuggingFaceEmbedding(
    model_name="BAAI/bge-large-zh-v1.5",
    device="cuda",  # 有显卡就写cuda,没有就写cpu
    trust_remote_code=True
)

# 后续构建索引时,会自动使用这个模型
index = VectorStoreIndex.from_documents(documents)

这里有个实用技巧:在正式构建大索引之前,先用10条文档做测试,分别用两个候选模型生成向量,手动测试几个高频问题的召回效果。这比看排行榜管用得多,因为你们的业务语料可能有自己的"行业黑话"。

选对了模型,"退款"和"退货"在向量空间里就是邻居,“报销"反而离得远。检索从"抽奖"变成了"点名”,准确率直线上升。

小结

Embedding模型是向量索引的灵魂翻译官。语种不对、维度不齐,你的向量库就是一堆混乱的坐标,检索全靠玄学。

4. Top-K与相似度:精准比数量重要

点题

向量存好了,模型也选对了,接下来就是检索环节的核心参数:similarity_top_k。它决定了每次查询,系统从向量库里召回多少条相关文档送给大模型。

很多新手觉得,召回越多越好,“韩信点兵,多多益善”。错!大模型的上下文窗口虽然越来越大,但它的注意力是有限的。塞进去10条无关信息,比只塞1条精准信息的破坏力还大。

Top-K数量与回答准确率的实验趋势 Top-1 Top-3 Top-5 Top-8 Top-15 100 90 80 70 60 50 40 30 20 10 0 回答准确率(%)

你看这张图,是不是挺反直觉的?Top-5左右准确率最高,再往多了走,准确率反而断崖式下跌。为啥?因为噪音进去了。

痛点分析

新手在这块容易走两个极端。

第一个极端:贪多。 有人直接把similarity_top_k拉到20,心想"我全都要"。结果呢?召回的文档里鱼龙混杂,有相关的,有半相关的,还有八竿子打不着的。大模型看到这么多信息,它的注意力被分散了,开始"一本正经地胡说八道"。这种现象叫上下文干扰。比如你问"公司的核心价值观是什么",结果召回的文档里有"价值观介绍"、“公司历史”、“竞争对手分析”。LLM把"竞争对手的价值观"也看进去了,最后给你缝合成一个四不像的答案。

第二个极端:洁癖。 有人只设top_k=1,觉得"最像的那个肯定最准"。可很多时候,正确答案分散在多个段落里。比如你问"这款产品有哪些优缺点",优点在文档第二章,缺点在文档第五章。top_k=1只能召回优点,结果LLM的回答严重以偏概全,用户看了还以为这是"只夸不骂"的水文。

还有一种隐藏的坑:不设置相似度阈值。有时候向量库里根本没有相关内容,可系统还是硬召回top_k个"相对最像"的。这些东西其实跟问题毫不相干,纯粹是矬子里拔将军。LLM拿到这些垃圾上下文,除了幻觉没有第二条路可走。

解决方案

参数设置没有银弹,但有一个"甜点区"和一套"组合拳"。

对于常规的企业知识库、产品文档,similarity_top_k=3~5是绝大多数场景的黄金分割点。既能覆盖分散的信息,又不至于引入过多噪音。

更重要的是,一定要配合similarity_cutoff(相似度阈值)使用,把那些"硬凑"的结果给滤掉。

query_engine = index.as_query_engine(
    similarity_top_k=5,      # 先召回5个
    similarity_cutoff=0.7    # 低于0.7分的,直接扔掉
)

另外,我强烈建议你在开发阶段,把检索结果打印出来肉眼检查一下:

# 先看检索器召回了什么
retriever = index.as_retriever(similarity_top_k=5)
nodes = retriever.retrieve("用户的具体问题")
for i, node in enumerate(nodes):
    print(f"--- 第{i+1}条 (score: {node.score:.3f}) ---")
    print(node.text[:200])

这个习惯能帮你快速定位:是检索阶段就丢了关键文档?还是召回了但LLM没理解?问题边界一清二楚。

好处就是,你喂给LLM的上下文是"精炼过的优质饲料",而不是"大杂烩"。LLM的注意力聚焦了,幻觉自然减少,回答的准确率蹭蹭往上涨。

小结

检索不是越多越好,而是越准越好。宁给LLM三句真言,不塞十句废话。

5. 查询引擎组装:从零件到整车

点题

前面我们聊了索引、切分、Embedding、检索,这些都是"零件"。而Query Engine就是把这些零件组装成的一辆整车。在LlamaIndex里,一句index.as_query_engine()看似简单,背后其实包含了三个核心部件:RetrieverNode PostprocessorResponse Synthesizer

不懂这些部件的分工,你就只能当乘客,司机位永远是别人坐的。

用户Query

Retriever
负责召回

ResponseSynthesizer
负责生成

NodePostprocessor
过滤/重排

最终Response

痛点分析

新手的典型状态,就是"一键启动,不再过问"。调用了as_query_engine()之后,就以为这东西是黑盒,没法也没必要再动。

可实际上,这里面藏着好几个大坑。

第一个坑:response_mode没选对。 LlamaIndex默认是compact模式,它先把召回的节点文本压缩拼接,再送给LLM。这适合大多数情况。但有些兄弟需要让模型对多个文档做"综合摘要",结果用了refine模式,导致模型逐段迭代,速度慢得一批;还有的兄弟明明只召回了一条长文档,却用了tree_summarize,大模型先把文档拆成小块总结,再逐层向上汇总,等了三五秒才出结果,用户体验直接崩盘。

第二个坑:不会开流式输出。 现在的AI应用,用户都习惯了ChatGPT那种"打字机效果"。可新手不知道在LlamaIndex里设streaming=True,结果用户点击查询后,面对白屏干等好几秒,突然蹦出一大段文字,体验非常割裂。

第三个坑:把query_enginechat_engine用。 query_engine是单轮问答的,没有记忆功能。有兄弟做聊天机器人,直接调query_engine.query()做连续对话,结果发现AI根本记不住上一轮说了啥。这不是Bug,是你用错了零件。

解决方案

要想当好司机,就得打开引擎盖看看。

首先是response_mode的选择:

  • compact:默认模式,把召回内容压缩后一次性发给LLM。适合大多数问答场景,速度中庸,效果稳定。
  • refine:迭代精化模式,先基于第一个chunk生成答案,再用第二个chunk修正,以此类推。适合需要深度整合大量片段的复杂问答,但Token消耗大、速度慢。
  • tree_summarize:构建树状总结,适合对海量文档做宏观摘要,但延迟最高。
  • simple_summarize:粗暴截断拼接,速度最快,但可能丢失信息。

常规RAG问答,老老实实用compactrefine就够了。

其次是流式输出,配置简单,体验翻倍:

query_engine = index.as_query_engine(
    similarity_top_k=3,
    response_mode="compact",
    streaming=True  # 开启流式
)

response = query_engine.query("讲下第三章的核心观点")

# 像打字机一样逐字输出
for token in response.response_gen:
    print(token, end="")

最后,理解查询引擎的组装本质。你可以把它拆开,手动组装:

from llama_index.core.retrievers import VectorIndexRetriever
from llama_index.core.query_engine import RetrieverQueryEngine

# 自定义检索器
retriever = VectorIndexRetriever(
    index=index,
    similarity_top_k=5
)

# 自定义查询引擎
query_engine = RetrieverQueryEngine.from_args(
    retriever,
    response_mode="compact",
    streaming=True
)

这种写法虽然长一点,但好处是"透明"。你知道哪一步在检索,哪一步在合成,出了问题直接定位,不用在as_query_engine的黑盒里抓瞎。

小结

查询引擎不是"一键启动就完事"的玩具车,而是一台可以调校的跑车。懂它的三大件,你才能从乘客变成握着方向盘的司机。

6. 调优与进阶:从能用到好用

点题

到了这一步,你的向量索引查询引擎已经能跑起来了。但在真实生产环境里,"能跑"和"好用"之间,还隔着几道坎:索引持久化混合检索结果重排序。这三板斧下去,你的RAG才能真正上得了台面。

痛点分析

很多新手兄弟的RAG项目,停留在"Demo级"。具体表现在:

每次重启都重建索引。 500篇文档还好,5万篇文档你等它向量化等到天荒地老。用户重启一下服务,泡杯咖啡回来还没建好,这能上线?

只靠向量检索。 向量检索擅长语义匹配,但对精确的关键词、型号、ID、专有名词,它有时候会"眼神不好"。比如用户搜"ERROR_CODE_502",向量检索可能觉得"ERROR_CODE_503"也挺像的,结果召回错误。这种精确匹配场景,传统关键词检索反而更靠谱。

没有重排序。 向量检索出来的Top-K,只是"语义上较近",但不一定是"最相关"。尤其是你放宽条件召回了20条,里面前5条未必比后5条更适合回答当前问题。没有Reranker做二次精排,很容易让次优结果混入上下文。

解决方案

这三板斧,咱们一个个来。

第一板斧:索引持久化。

LlamaIndex支持把构建好的索引存到磁盘,下次直接从磁盘加载,秒级启动。

from llama_index.core import StorageContext, load_index_from_storage

# 构建时指定存储上下文
storage_context = StorageContext.from_defaults()
index = VectorStoreIndex.from_documents(
    documents, 
    storage_context=storage_context
)

# 持久化到本地文件夹
storage_context.persist(persist_dir="./storage")

# 下次启动时,直接加载
from llama_index.core import StorageContext, load_index_from_storage
storage_context = StorageContext.from_defaults(persist_dir="./storage")
index = load_index_from_storage(storage_context)

记住,只要你的文档没变,就不需要重新构建。生产环境必备。

第二板斧:混合检索。

向量检索负责"语义模糊匹配",关键词检索负责"精确命中"。LlamaIndex里可以用QueryFusionRetriever把两者结合起来,取各自的长处。

from llama_index.retrievers.bm25 import BM25Retriever
from llama_index.core.retrievers import QueryFusionRetriever

# 创建两种检索器
vector_retriever = index.as_retriever(similarity_top_k=10)
bm25_retriever = BM25Retriever.from_defaults(
    nodes=index.docstore.docs.values(),
    similarity_top_k=10
)

# 融合检索器
retriever = QueryFusionRetriever(
    [vector_retriever, bm25_retriever],
    similarity_top_k=5,
    num_queries=1
)

query_engine = RetrieverQueryEngine.from_args(retriever)

第三板斧:引入Reranker。

我的推荐策略是"宽进严出"。先用较大的top_k召回一批候选,然后让Reranker做二次精排,只取前3名最相关的送给LLM。

from llama_index.core.postprocessor import SentenceTransformerRerank

# 重排序模型
reranker = SentenceTransformerRerank(
    model="BAAI/bge-reranker-large",
    top_n=3
)

query_engine = index.as_query_engine(
    similarity_top_k=20,           # 第一步多召回
    node_postprocessors=[reranker] # 第二步精排
)

bge-reranker-large这个模型专门干这事,它交叉编码问题和文档,比双塔式的Embedding模型更能捕捉细粒度相关性。加了它,召回准确率通常能再上一个台阶。

这三板斧打完,你的向量索引查询引擎就从"实验室玩具"变成了"生产线上的工具"。启动快、搜得全、排得准。

小结

基础向量索引带你"入门",持久化、混合检索和重排序带你"入行"。真到了生产环境,这三项缺一不可。

写在最后

聊到这里,咱们已经把LlamaIndex向量索引查询引擎的整条流水线给盘了一遍。从文档怎么切,到向量怎么选;从Top-K怎么设,到查询引擎怎么装;再到持久化和重排序这些生产级技巧。你会发现,RAG这事儿,说到底就是"细节堆出来的艺术"。没有哪一步是可有可无的,也没有哪个参数是"随便设设就行"的。

我知道,现在AI领域新概念层出不穷,今天Agent,明天MCP,后天什么多模态GraphRAG,听起来一个比一个酷。但大仙想跟你说一句掏心窝子的话:别瞧不起这些"基础功"。 向量索引查询引擎就是RAG的底盘,底盘不稳,你上面盖再漂亮的房子也得晃。把那些花里胡哨的概念先放一放,把这章的内容吃透、练熟,你回过头再看那些高级玩意,会有一种"降维打击"的通透感。

编程这条路,从来都不是比谁知道的库多,而是比谁基础扎得牢、细节抠得深。每一步成长都算数,每一行认真写的代码都不会骗你。保持好奇,持续动手,你也能从那个对着报错抓耳挠腮的新手,成长为从容调优的老手。

咱们下篇接着聊,拜拜!

关注私信备注:“资料代找获取”,全网计算机学习资料代找:例如:
《课程:2026 年多模态大模型实战训练营》
《课程:AI 大模型工程师系统课程 (22 章完整版 持续更新)》
《课程:AI 大模型系统实战课第四期 (2026 年开课 持续更新)》
《课程:2026 年 AGI 大模型系统课 23 期》
《课程:2026 年 AGI 大模型系统课 21 期》
《课程:AI 大模型实战课 8 期 (2026 年 2 月最新完结版)》
《课程:AI 大模型系统实战课三期》
《课程:AI 大模型系统课程 (2026 年 2 月开课 持续更新)》
《课程:AI 大模型全阶课程 (2025 年 12 月开课 2026 年 6 月结课)》
《课程:AI 大模型工程师全阶课程 (2025 年 10 月开课 2026 年 4 月结课)》
《课程:2026 年最新大模型 Agent 开发系统课 (持续更新)》
《课程:LLM 多模态视觉大模型系统课》
《课程:大模型 AI 应用开发企业级项目实战课 (2026 年 1 月开课)》
《课程:大模型智能体线上速成班 V2.0》
《课程:Java+AI 大模型智能应用开发全阶课》
《课程:Python+AI 大模型实战视频教程》
《书籍:软件工程 3.0: 大模型驱动的研发新范式.pdf》
《课程:人工智能大模型系统课 (2026 年 1 月底完结版)》
《课程:AI 大模型零基础到商业实战全栈课第五期》
《课程:Vue3.5+Electron + 大模型跨平台 AI 桌面聊天应用实战 (2025)》
《课程:AI 大模型实战训练营 从入门到实战轻松上手》
《课程:2026 年 AI 大模型 RAG 与 Agent 智能体项目实战开发课》
《课程:大模型训练营配套补充资料》

Logo

AtomGit AI 社区提供模型库、数据集、Agent、Token等资源

更多推荐