如何在离线环境下用LangChain+Hugging Face部署CSV分析Chatbot
离线接入本地模型的参数调整方案
一、嵌入模型(sentence-transformers/all-MiniLM-L6-v2)调整
替换原远程加载逻辑,直接指定本地模型路径并开启离线模式:
from langchain.embeddings import HuggingFaceEmbeddings # 初始化本地嵌入模型 embeddings = HuggingFaceEmbeddings( model_name="/绝对路径/到/all-MiniLM-L6-v2模型文件夹", model_kwargs={"device": "cpu"}, # 按需改为"cuda"启用GPU加速 encode_kwargs={"normalize_embeddings": True}, local_files_only=True # 强制仅加载本地文件,不访问HF远程 )
- 确保本地模型文件夹包含完整的模型文件:
config.json、model.safetensors(或pytorch_model.bin)、tokenizer.json、vocab.txt等。
二、LLM模型(TheBloke/Llama-2-7B-Chat-GGML)调整
使用CTransformers加载本地GGML格式模型,替代原HF API调用:
from langchain.llms import CTransformers # 初始化本地Llama2模型 llm = CTransformers( model="/绝对路径/到/llama-2-7b-chat.ggmlv3.q4_0.bin", # 替换为你的GGML模型文件名 model_type="llama", # 指定模型类型为llama config={ "max_new_tokens": 1024, # 生成文本的最大长度 "temperature": 0.7, # 生成随机性,值越低越严谨 "context_length": 2048 # 模型上下文窗口长度 } )
- 提前安装依赖:离线环境需预先安装
ctransformers库(可通过本地wheel包安装)。
三、整合到CSV分析链
替换原链中的远程模型引用,用上述本地模型构建检索QA链:
from langchain.document_loaders import CSVLoader from langchain.vectorstores import FAISS from langchain.chains import RetrievalQA # 加载本地CSV数据 loader = CSVLoader(file_path="你的数据文件.csv") documents = loader.load() # 用本地嵌入模型构建向量库 db = FAISS.from_documents(documents, embeddings) # 构建离线可用的CSV分析问答链 qa_chain = RetrievalQA.from_chain_type( llm=llm, chain_type="stuff", retriever=db.as_retriever(search_kwargs={"k": 3}), return_source_documents=True )
额外注意事项
- 删除代码中所有涉及Hugging Face API Token的配置(如
HUGGINGFACEHUB_API_TOKEN),以及远程模型加载的逻辑(如HuggingFaceHub类的使用)。 - 若使用GPU加速,需确保本地环境已配置好CUDA及对应版本的PyTorch(离线环境需预先安装)。
内容的提问来源于stack exchange,提问作者stat_man
相关产品推荐
相关产品推荐

