LangChain-04 RAG Retrieval-Augmented Generation 检索增强生成 原创

内容简介

LangChain 中的 “RAG” 指的是 “Retrieval-Augmented Generation”,即检索增强生成。它是一种结合了检索(从大量数据中检索相关信息)和生成(基于检索到的信息生成文本)的技术,旨在改善和增强自然语言生成模型的性能。通过检索相关的信息作为输入,模型能够生成更准确、更丰富和更具相关性的输出。

我们可以将:

  • 文本
  • PDF
  • 图片
  • 网页
    等等数据进行向量化存储,使用RAG进行生成,会得到很好的效果。

在这里插入图片描述

安装依赖

pip install --upgrade --quiet  langchain-core langchain-community langchain-openai
pip install langchain docarray tiktoken

编写代码

from langchain_community.vectorstores import DocArrayInMemorySearch
from langchain_core.output_parsers import StrOutputParser
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.runnables import RunnableParallel, RunnablePassthrough
from langchain_openai.chat_models import ChatOpenAI
from langchain_openai.embeddings import OpenAIEmbeddings

# Requires:
# pip install langchain docarray tiktoken

vectorstore = DocArrayInMemorySearch.from_texts(
    ["harrison worked at kensho", "bears like to eat honey"],
    embedding=OpenAIEmbeddings(),
)
retriever = vectorstore.as_retriever()

template = """Answer the question based only on the following context:
{context}

Question: {question}
"""
prompt = ChatPromptTemplate.from_template(template)
model = ChatOpenAI(
    model="gpt-3.5-turbo",
)
output_parser = StrOutputParser()

setup_and_retrieval = RunnableParallel(
    {"context": retriever, "question": RunnablePassthrough()}
)
chain = setup_and_retrieval | prompt | model | output_parser

message = chain.invoke("where did harrison work?")
print(message)

如果你想要流式输出的话(类似打字机的效果),你需要:

# message = chain.invoke("where did harrison work?")
stream = chain.stream("where did harrison work?")
for chunk in stream:
    print(chunk, end="", flush=True)

运行结果

Harrison worked at Kensho.

在这里插入图片描述

posted @   武子康  阅读(0)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
点击右上角即可分享
微信分享提示