开启左侧

本地Langchain搭建RAG

[复制链接]
就是侑范儿 发表于 2025-9-7 23:37:01 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
RAG:



LangChian 可以将 LLM 模型、向量数据库、交互层 Prompt、外部知识、外部工具整合到一起,进而可以自由构建 LLM 应用。Langchain是一个基于大型语言模型的开发应用程序框架。
搭建本地demo代码

    文档加载
  1. from langchain.document_loaders import TextLoader
  2. loader = TextLoader('./rag.txt') docs = loader.load()
复制代码
    文档处理器
将文档拆分成块
  1. from langchain.text_splitter import RecursiveCharacterTextSplitter
  2. text_splitter = RecursiveCharacterTextSplitter(chunk_size=20, chunk_overlap=20)
  3. splits = text_splitter.split_documents(docs)
复制代码
    向量存储器 vectorstore,检索器 retriever
  1. from langchain_community.vectorstores import Chroma
  2. vectorstore = Chroma.from_documents( documents=splits, embedding=HuggingFaceEmbeddings(model_name="moka-ai/m3e-base") )
  3. retriever = vectorstore.as_retriever()
复制代码
    模型 model
from modelscope import snapshot_download
from transformers import pipeline
model_dir = snapshot_download('LLM-Research/Llama-3.2-3B-Instruct') llm = pipeline( "text-generation", model=model_dir, torch_dtype=torch.bfloat16, device_map="auto", max_new_tokens =100,)
return_model = HuggingFacePipeline(pipeline=llm)
利用modelscope中的开源模型,需要HuggingFacePipeline 修改下模型格式满足模型的输入格式。
    Chains,Chain是指对 LangChain 多个组件的一系列调用。
from langchain.chains import RetrievalQA
qa_chain = RetrievalQA.from_chain_type(
llm=return_model, retriever=vectorstore.as_retriever())
question = 'RAG是什么' result = qa_chain({"query": question})
print(f'大语言模型的回答为:{result["result"]}')
最后输出:

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

发布主题
阅读排行更多+

Powered by Discuz! X3.4© 2001-2013 Discuz Team.( 京ICP备17022993号-3 )