构建简单Agnet(3) 使用简单RAG

构建简单RAG

什么是RAG?
RAG是一种 混合AI Agent架构 ,它将传统的信息检索系统与现代的生成式AI模型结合起来,以提高AI回答问题的准确性和可靠性。

工作原理

RAG的工作流程主要包括三个步骤:

  1. 检索(Retrieval) :当用户提出问题时,系统首先从知识库或文档集合中检索相关信息
  2. 增强(Augmentation) :将检索到的相关信息与用户的问题一起作为上下文
  3. 生成(Generation) :基于检索到的信息和用户问题,生成AI模型生成回答

主要优势

  • 减少幻觉 :通过基于真实文档生成回答,减少AI编造信息的情况
  • 知识更新 :可以轻松更新知识库,无需重新训练整个模型
  • 可解释性 :可以追溯回答的来源,提高透明度
  • 成本效益 :相比大规模预训练,维护知识库成本更低

上下文

上下文是RAG模型中的核心,它包含用户问题、检索到的文档和生成的答案。

# 导入 PromptTemplate:用于定义单条提示模板
# 导入 FewShotPromptTemplate:用于基于多个示例构建少样本提示模板
from langchain_core.prompts import PromptTemplate, FewShotPromptTemplate

# Define examples for the few-shot prompt
examples = [
    {
   
   
            "question": "谁的寿命更长,史蒂夫·乔布斯还是爱因斯坦?",
            "answer": """这个问题是否需要追加问题:是。
    追加问题:史蒂夫·乔布斯享年多少岁?
    中间答案:史蒂夫·乔布斯享年56岁。
    追加问题:爱因斯坦享年多少岁?
    中间答案:爱因斯坦享年76岁。
    最终答案:爱因斯坦
""",
    },
    {
   
   
            "question": "Naver的创始人是什么时候出生的?",
            "answer": """这个问题是否需要追加问题:是。
    追加问题:谁是Naver的创始人?
    中间答案:Naver是由李海珍创立的。
    追加问题:李海珍是什么时候出生的?
    中间答案:李海珍出生于1967年6月22日。
    最终答案:1967年6月22日
""",
    },
    {
   
   
            "question": "栗谷李珥的母亲出生时,谁是在位的国王?",
            "answer": """这个问题是否需要追加问题:是。
    追加问题:谁是栗谷李珥的母亲?
    中间答案:栗谷李珥的母亲是申师任堂。
    追加问题:申师任堂是什么时候出生的?
    中间答案:申师任堂出生于1504年。
    追加问题:1504年朝鲜的国王是谁?
    中间答案:1504年朝鲜的国王是燕山君。
    最终答案:燕山君
""",
    },
    {
   
   
            "question": "《老男孩》和《寄生虫》的导演是来自同一个国家吗?",
            "answer": """这个问题是否需要追加问题:是。
    追加问题:谁是《老男孩》的导演?
    中间答案:《老男孩》的导演是朴赞郁。
    追加问题:朴赞郁来自哪个国家?
    中间答案:朴赞郁来自韩国。
    追加问题:谁是《寄生虫》的导演?
    中间答案:《寄生虫》的导演是奉俊昊。
    追加问题:奉俊昊来自哪个国家?
    中间答案:奉俊昊来自韩国。
    最终答案:是
""",
    },
]

观察

example_prompt = PromptTemplate.from_template(
    "Question:\n{question}\nAnswer:\n{answer}"
)

print(example_prompt.format(**examples[0]))
few_shot_prompt = FewShotPromptTemplate(
    examples=examples,
    example_prompt=example_prompt,
    suffix="Question:\n{question}\nAnswer:",
    input_variables=["question"],
)

# Example question
question = "当谷歌成立时,比尔盖茨多大年纪?"

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值