本地deepseek langchain
时间: 2025-03-17 19:08:50 浏览: 52
### 如何在本地环境中设置和运行 DeepSeek 和 LangChain 的集成
#### 环境准备
为了成功实现 DeepSeek 和 LangChain 的本地集成,首先需要完成必要的环境配置。这包括安装 Ollama 工具以及确保 Python 开发环境可用。
Ollama 是一种轻量级工具,用于管理和运行大型语言模型 (LLM),支持多种模型架构,其中包括 DeepSeek 提供的系列模型 [^1]。因此,在开始之前,请按照官方指南下载并安装 Ollama:
```bash
curl https://ollama.ai/install.sh | sh
```
此命令会自动检测操作系统并安装适合版本的 Ollama 软件包 [^2]。
#### 下载 DeepSeek 模型
通过 Ollama 获取所需的 DeepSeek 模型实例(例如 `deepseek-r1`),可以执行如下命令来拉取模型到本地缓存目录中:
```bash
ollama pull deepseek/r1
```
这条指令将从远程仓库获取指定名称下的预训练权重文件,并存储至默认路径下以便后续调用 。
#### 配置 LangChain 连接器
LangChain 是一个灵活框架,允许开发者轻松连接各种 LLMs 及其应用场景。要让 LangChain 使用刚刚加载好的 DeepSeek 模型作为推理引擎,则需定义相应的适配逻辑。
以下是基于 Python 编写的简单示例脚本,展示如何初始化链路并与自托管模型交互:
```python
from langchain.llms import Ollama
# 初始化OLLAMA接口对象
llm = Ollama(model="deepseek", temperature=0.7)
# 测试对话功能
response = llm.invoke("你好!今天过得怎么样?")
print(response)
```
上述代码片段创建了一个指向特定型号 (`deepseek`) 的句柄变量 `llm` ,并通过调整参数如温度值控制输出风格多样性 [^3]。
#### 构建简易RAG应用案例
假设我们希望进一步扩展基础聊天能力,加入检索增强生成(Retrieval-Augmented Generation, RAG)特性,则可引入矢量数据库组件辅助处理复杂查询请求。下面给出一段综合演示代码:
```python
from langchain.vectorstores import Chroma
from langchain.embeddings.openai import OpenAIEmbeddings
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain.chains import RetrievalQAWithSourcesChain
import chromadb
embedding_function = OpenAIEmbeddings()
persist_directory = './chroma_db'
client_settings = {
'chroma_db_impl': 'duckdb+parquet',
'persist_directory': persist_directory,
}
vectordb = Chroma(
embedding_function=embedding_function,
client_settings=client_settings,
collection_name="my_collection"
)
text_splitter = RecursiveCharacterTextSplitter(chunk_size=500, chunk_overlap=0)
texts = ["这是一个测试文档的内容...", "...更多段落继续补充"]
docs = text_splitter.create_documents(texts=texts)
vectordb.add_texts([doc.page_content for doc in docs])
qa_chain = RetrievalQAWithSourcesChain.from_llm(llm=llm, retriever=vectordb.as_retriever())
query = "请总结一下刚才上传资料的主要观点是什么?"
result = qa_chain(query)
print(result['answer'])
print("\n参考资料:\n" + "\n".join(["- "+source for source in result['sources']]))
```
这里利用了Chroma向量库保存嵌入表示形式的数据集条目;同时借助OpenAI Embedding服务计算相似度得分矩阵从而定位最匹配候选答案区间范围内的原始素材出处链接列表返回给最终用户查看参考依据所在位置信息 [^3]。
---
阅读全文
相关推荐


















