🤔️ 你是否曾想过,如果有一个 AI 助手,能帮你自动处理重复工作、整理海量信息、甚至还能和你一起头脑风暴,那该有多好?
🤩 好消息!现在,这一切不再是科幻电影里的场景,而是触手可及的现实!AI Agent(智能体)技术,正在以惊人的速度改变我们的工作和生活!
先看结果:
🤯 什么是 AI Agent?
简单来说,AI Agent 就像一个拥有“大脑”和“手脚”的虚拟助手。它不仅能理解你的指令(大脑),还能帮你执行各种任务(手脚),比如:
* 自动回复邮件:再也不用被淹没在邮件的海洋里!
* 整理文档:几秒钟内,杂乱无章的资料变得井井有条!
* 数据分析:告别繁琐的 Excel 操作,让 AI 帮你洞察数据背后的秘密!
* 生成报告:一键生成专业报告,让你的工作成果更出彩!
🚀 为什么现在是学习 AI Agent 的最佳时机?
* 技术成熟:大模型技术的突破,为 AI Agent 的发展奠定了坚实基础。
* 应用广泛:从职场办公到日常生活,AI Agent 的应用场景无处不在。
* 门槛降低:现在,即使你没有编程基础,也能通过一些工具和平台,轻松构建自己的 AI Agent!
* 抢占先机:掌握 AI Agent 技术,让你在职场竞争中脱颖而出,成为 AI 时代的弄潮儿!
💪 本文将带你:
1. 快速入门:用最通俗易懂的语言,揭开 AI Agent 的神秘面纱。
2. 实战演练:手把手教你从零开始搭建一个知识图谱 RAG 系统,让你的 AI Agent 拥有“超强记忆力”!
3. 进阶提升:了解更多 AI Agent 的应用场景和开发技巧,成为 AI Agent 领域的专家!
---
📚 从零搭建知识图谱 RAG,让你的 AI Agent 拥有“超强记忆力”!
🧐 什么是 RAG?
RAG(Retrieval-Augmented Generation)是一种结合了检索和生成的技术。简单来说,它就像一个“图书馆”+“作家”的组合:
* 图书馆:存储着海量的信息(知识图谱)。
* 作家:根据你的问题,从图书馆里找到相关资料,然后生成通顺、准确的答案。
🤩 为什么要用 RAG?
* 更准确:RAG 不仅能生成答案,还能提供答案的来源,让你的 AI Agent 更可信!
* 更灵活:RAG 可以根据不同的知识库,生成不同的答案,让你的 AI Agent 成为“百事通”!
* 更强大:RAG 可以结合各种检索技术,比如向量检索和知识图谱检索,让你的 AI Agent 拥有“超能力”!
🛠️ 手把手教你搭建 RAG 系统!
我们将以一个“神奇动物在哪里”的故事为例,展示如何用 CAMEL 框架搭建一个混合 RAG 系统,结合向量检索和知识图谱检索,让你的 AI Agent 能够查询和探索存储的知识。
第一步:准备工作
* 安装 CAMEL 框架(别担心,我们会提供详细的安装指南!)
* 准备一个本地的 embedding 模型(或者让 CAMEL 自动下载)
* 准备一个 Neo4j 图数据库(或者使用云服务)
第二步:代码实现
# 导入必要的库
from camel.models import ModelFactory
from camel.types import ModelPlatformType, ModelType
from camel.loaders import UnstructuredIO
from camel.storages import Neo4jGraph
from camel.retrievers import AutoRetriever
from camel.types import StorageType
from camel.agents import ChatAgent, KnowledgeGraphAgent
from camel.messages import BaseMessage
from camel.embeddings import SentenceTransformerEncoder
# 设置检索器
camel_retriever = AutoRetriever(
vector_storage_local_path="local_data/embedding_storage",
storage_type=StorageType.QDRANT,
embedding_model=SentenceTransformerEncoder(model_name='intfloat/e5-large-v2'),
)
# 设置模型
model = ModelFactory.create(
model_platform=ModelPlatformType.OPENAI_COMPATIBLE_MODEL,
model_type="Qwen/Qwen2.5-72B-Instruct",
)
# 连接图数据库
n4j = Neo4jGraph(
url="你的url",
username="你的username",
password="你的密码",
)
# 初始化工具和 Agent
uio = UnstructuredIO()
kg_agent = KnowledgeGraphAgent(model=model)
第三步:向量检索
# 设置查询问题
query="DataWhale和CAMEL之间是什么关系。"
# 使用向量检索器获取相关内容
vector_result = camel_retriever.run_vector_retriever(
query=query,
contents="""在一个神奇的动物王国里,住着一只聪明的骆驼,名叫CAMEL,以及一只智慧的鲸鱼,名叫DataWhale。CAMEL生活在辽阔的沙漠中,而DataWhale则畅游在无边无际的海洋里。虽然它们的栖息地截然不同,但它们都对探索新知充满了浓厚的兴趣。...(省略)..."""
)
# 打印向量检索的结果
print(vector_result)
第四步:创建知识图谱
# 从文本创建知识图谱元素
elements = uio.create_element_from_text(
text="""在一个神奇的动物王国里,住着一只聪明的骆驼,名叫CAMEL,以及一只智慧的鲸鱼,名叫DataWhale。CAMEL生活在辽阔的沙漠中,而DataWhale则畅游在无边无际的海洋里。...(省略)..."""
)
# 使用知识图谱 Agent 创建知识图谱数据
graph_element = kg_agent.run(elements, parse_graph_elements=True)
# 将知识图谱数据存储到图数据库中
n4j.add_graph_elements(graph_elements=[graph_element])
第五步:知识图谱检索
# 根据查询问题创建一个元素
query_element = uio.create_element_from_text(
text=query, element_id="1"
)
# 让知识图谱 Agent 从查询中提取节点和关系信息
ans_element = kg_agent.run(query_element, parse_graph_elements=True)
# 匹配知识图谱存储中的实体
kg_result = []
for node in ans_element.nodes:
n4j_query = f"""
MATCH (n {{id: '{node.id}'}})-[r]->(m)
RETURN 'Node ' + n.id + ' (label: ' + labels(n)[0] + ') has relationship ' + type(r) + ' with Node ' + m.id + ' (label: ' + labels(m)[0] + ')' AS Description
UNION
MATCH (n)<-[r]-(m {{id: '{node.id}'}})
RETURN 'Node ' + m.id + ' (label: ' + labels(m)[0] + ') has relationship ' + type(r) + ' with Node ' + n.id + ' (label: ' + labels(n)[0] + ')' AS Description
"""
result = n4j.query(query=n4j_query)
kg_result.extend(result)
kg_result = [item['Description'] for item in kg_result]
# 显示来自知识图谱数据库的结果
print(kg_result)
第六步:合并结果,生成最终答案
# 合并来自向量搜索和知识图谱实体搜索的结果
comined_results = str(vector_result) + "\n".join(kg_result)
# 设置代理
sys_msg = BaseMessage.make_assistant_message(
role_name="CAMEL Agent",
content="""您是一个有用的助手来回答问题,
我将给您原始查询和检索到的上下文,
根据检索到的上下文回答原始查询。""",
)
camel_agent = ChatAgent(system_message=sys_msg,
model=model)
# 将检索到的信息传递给智能体
user_prompt=f"""
原始查询是 {query}
检索到的上下文是 {comined_results}
"""
user_msg = BaseMessage.make_user_message(
role_name="CAMEL User", content=user_prompt
)
# 获取响应
agent_response = camel_agent.step(user_msg)
print(agent_response.msg.content)
🎉 恭喜你!你已经成功搭建了一个混合 RAG 系统!现在,你的 AI Agent 已经具备了“超强记忆力”,可以回答各种关于“神奇动物在哪里”的问题啦!
---
🌟 进阶提升:探索更多 AI Agent 的应用场景
除了知识问答,AI Agent 还能做什么?
* 智能客服:7x24 小时在线,解答用户疑问,提升客户满意度!
* 个性化推荐:根据用户喜好,推荐商品、电影、音乐,打造专属体验!
* 智能写作:帮你写邮件、写报告、写文案,释放你的创造力!
* 自动化办公:自动处理表格、生成报表、安排会议,让你告别繁琐!
* ... 更多应用场景等你来探索!
🔥 还在等什么?赶快行动起来,加入 AI Agent 的浪潮吧!温馨提示:
* 本文提供的代码仅为示例,你可以根据自己的需求进行修改和优化。
* AI Agent 技术仍在不断发展,保持学习的热情,才能走在时代的前沿!
* 不要忘了给我们点赞👍、评论💬、分享🔗哦!你的支持是我们前进的动力!
---
想要学习和了解更多AI Agent相关技术?请关注我们的公众号,持续更新,敬请期待!