

1
上下文工程是一门专注于为大模型的“上下文窗口”填充恰到好处的信息,以引导其完成特定任务的艺术与科学。

普通提问如同“闭卷考试”,模型只能依赖记忆。而RAG允许模型在回答前“查阅”我们提供的相关资料(知识 库),从而给出更准确、更有依据的答案。




Llamalndex是一个强大的框架,它将RAG的完整流程(从数据加载到查询)封装为简洁、易用的组件。

只需几行代码即可实现完整的RAG流程
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# 1. 加载文档 (Load Documents)
documents = SimpleDirectoryReader('./docs').load_data()
#2. 创建索引 (Create Index)
# 这一步包含了分割、向量化和初步存储
index = VectorStoreIndex.from_documents(
documents,
embed_model=DashScopeEmbedding(...)
)
# 3. 创建查询引擎(Create Query Engine)
query_engine = index.as_query_engine(
llm=OpenAILike(...)
)
#4. 执行查询(Execute Query)
streaming_response = query_engine.query(
'我们公司项目管理应该用什么工具'
)
streaming_response.print_response_stream()
问题(Problem) VectorStorelndex.from_documents 过程可能非常耗时,尤其是在知识库很大的情况下。每次启动都重新建立索引是不切实际的。

将RAG的核心功能封装成独立的函数或类,可以极大地提高代码的可维护性和复用性。

通过简单的封装,调用逻辑变得清晰、简洁。