#LLM RAG实例

RAG:

RAG(检索-增强-生成,Retrieval-Augmented Generation)是一种结合了信息检索与文本生成的技术框架,旨在通过动态引入外部知识提升生成模型的效果。


RAG 的核心原理

  • 检索(Retrieval):当输入问题或任务时,系统从外部知识库(如文档、数据库、网页等)中检索相关段落或信息。例如,使用语义搜索或关键词匹配找到最相关的文档。

  • 增强(Augmentation):将检索到的信息与原始输入结合,为生成模型提供上下文支持。例如,将检索到的文本拼接在用户问题后,形成增强的输入。

  • 生成(Generation):基于增强后的上下文,生成模型(如GPT、BART)输出更准确、信息丰富的回答。

实例

加载文档

loader = TextLoader("./data/**.txt")
documents = loader.load()

创建拆分器

# Split
text_splitter = RecursiveCharacterTextSplitter.from_tiktoken_encoder(
    chunk_size=300, 
    chunk_overlap=50)
# Make splits
splits_documents = text_splitter.split_documents(documents)

词向量嵌入 Embedding

model_kwargs = {"device": "cpu"}
encode_kwargs = {"normalize_embeddings": True}
embedding_model = HuggingFaceBgeEmbeddings(
    model_name="BAAI/bge-large-en-v1.5", model_kwargs=model_kwargs, encode_kwargs=encode_kwargs
)

指定 persist_directory 将会把嵌入存储到磁盘上

persist_directory = 'db'   
db = Chroma.from_documents(splits_documents, embedding_model, persist_directory='./RAG/vectors_embedding')
retriever = db.as_retriever( )###search_type="similarity_score_threshold", search_kwargs={"score_threshold": 0.2}

询问的问题

query = "What is the FLAVOR WINE?"

###加载模型
llm = ChatDeepSeek(
    model="deepseek-chat",
    temperature=0,
    max_tokens=None,
    timeout=None,
    max_retries=2,
    api_key="****************",
    # other params...
)

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

Question: {question}
"""
prompt = ChatPromptTemplate.from_template(template)
 
rag_chain = (           {"context": retriever, "question": RunnablePassthrough()}           | prompt           | llm           | StrOutputParser()   )      
response = rag_chain.invoke(query)  

结果:

在这里插入图片描述
可参考:langchain官网 https://python.langchain.com/v0.1/docs/modules/data_connection/retrievers/vectorstore/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值