当前位置: 首页 > news >正文

构建大模型知识库(一)

 

直接把链接复制到迅雷中下载中即可

langchain api
https://smith.langchain.com/onboarding?organizationId=02938e5e-4a76-4d2d-b5f0-24da73525ba9&step=1https://anaconda.org/conda-forge/langchain-openai工程化的开发环境
git clone  https://github.com/chachat-space/Langchain-Chatchat.git模型库
https://devpress.csdn.net/v1/user/newLogin?callback=https%3A%2F%2Fcommunity.modelscope.cn%2F%3FisAutoFollow%3D1

1.1 Conda 与 Anaconda 的区别
诸如 Anaconda、Miniconda、Bioconda(用于计算生物学)等都是基于 conda 的工具软件,这些软件均包含 conda 包和环境管理器,但两者的概念仍要进行一定的区分。

Anaconda 是一个大而全的软件发行版,是一个预先建立和配置好的模块集,能够安装在操作系统上使用。它包含了Python本身和数百个第三方开源项目的二进制文件,如 numpy、scipy、ipython、matplotlib等,这些库基本是为了方便处理数据科学相关的问题。

Miniconda 也是一个软件发行版,但它仅包含python、conda 和 conda 的依赖项,本质上就是一个空的用来安装 conda 环境的安装器,它没有 Anaconda 中那么多的包,可以理解为 Anaconda 的精简版,能够方便用户按照自己的需求,从零开始构建任意的环境。

尽管可以独立地下载安装 conda 而不用 Anaconda 和 Miniconda,但后两者为提供了 conda 安装环境,使用起来会更方便。

1.2 Conda 与 pip 的区别
Conda 作为软件包管理器,可以帮助用户查找和安装软件包,这与另一个常见的基于Python的跨平台包管理器 pip 类似。那既然 Python 自带了 pip 包管理工具,为什么还会需要使用 conda 呢?

先来介绍 pip,它是 Python 包的通用管理器,全称是 Pip Install Packages,它是一个Python官方认证的包管理工具,只能管理python包而无法安装非Python依赖项,例如HDF5、MKL、LLVM等,通常用于在相互独立的环境中安装发布在 Python Package Index(PyPI)上面的包。Pip和 PyPI 均由Python Packaging Authority(PyPA)管理和支持。

而 conda 既具有 pip 的包管理能力,同时也具有 vitualenv 的环境管理功能,因此在相互独立的环境中,可以简单认为 conda 就是 pip 和 vitualenv 的组合,在包管理这方面,conda 不仅能管理 python 包,还可以管理任何类型的、用任何语言写的包和依赖,包来源是 Anaconda repo(默认)和 Cloud。

简单而言,pip 与 conda 最关键的区别在于,在使用 pip 之前,必须通过系统软件包管理器下载和安装python解释器,而 conda 可以直接安装 python 软件包以及解释器,但 conda 只能在 conda 环境下安装各类的包,因此需要先创建 conda 环境。

conda update conda

2. 创建新的 Conda 环境

有时候,现有的环境可能因为各种原因(如包冲突)而出现问题。你可以尝试在一个新的环境中安装 langchain-openai

conda create -n new_env python=3.8

conda activate new_env

然后尝试安装:

conda install langchain-openai

conda activate your_env # 如果还没有激活环境

pip install langchain-openai

conda config --set show_channel_urls yes

conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/

conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/

conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/

conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/msys2/

conda install langchain-openai

conda create --name myenv python=3.8 numpy matplotlib

 

# windows

conda activate myenv

# Linux/Unix

source activate myenv

conda install scipy # 卸载 conda remove scipy

conda env create -f environment.yml

conda deactivate

conda remove -n  myenv

.condarc 配置文件

channels:- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/- https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/msys2/- https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/- https://repo.anaconda.com/pkgs/main- https://repo.anaconda.com/pkgs/r- https://repo.anaconda.com/pkgs/msys2
show_channel_urls: true
report_errors: true
envs_dirs:- D:\ProgramData\conda_envs
pkgs_dirs:- D:\ProgramData\conda_pkgs

5. 检查包名和版本兼容性

### **1. 确保 Ollama 已正确部署**
#### **步骤**:
1. **安装 Ollama**:
   ```bash
   # 根据官方文档安装 Ollama(以 macOS 为例)
   brew install ollama
   ```
2. **部署本地模型**(例如 `llama3.1`):
   ```bash
   ollama run llama3.1
   ```
   - 模型会下载并启动,Ollama 默认监听端口 `11434`,HTTP API 地址为 `http://localhost:11434`。

3. **验证 Ollama 服务**:
   ```bash
   curl http://localhost:11434/health
   # 应返回 {"status":"healthy"}
   ```

2. 配置 LangChain 调用 Ollama**
from langchain_community.llms import Ollama

# 初始化 Ollama 客户端,指定模型名称和 API 地址
ollama = Ollama(
    model="llama3.1",  # Ollama 中部署的模型名称
    base_url="http://localhost:11434"  # Ollama 的 HTTP API 地址
)

# 发送查询
response = ollama.invoke("你好,今天过得怎么样?")
print(response)
```

#### **关键参数说明**:
- **`model`**:Ollama 中部署的模型名称(如 `llama3.1`、`deepseek-r1` 等)。
- **`base_url`**:Ollama 的 HTTP 端点,默认为 `http://localhost:11434`。
- **其他参数**:可以通过 `temperature`、`max_tokens` 等控制生成行为:
  ```python
  response = ollama.invoke(
      "解释量子力学",
      temperature=0.7,
      max_tokens=200
  )
  ```

---

### **3. 在 LangChain 应用中集成(如 Langchain-Chatchat)**
#### **步骤**:
1. **配置模型**:
   - 在 `model_settings.yaml` 中添加 Ollama 模型配置:
     ```yaml
     # model_settings.yaml
     OLLAMA_MODELS:
       - name: "llama3.1"  # 模型别名(在 Chatchat 中显示的名称)
         model_name: "llama3.1"  # Ollama 中的实际模型名称
         base_url: "http://localhost:11434"
     ```

2. **启动服务**:
   chatchat start -a  # 启动 Chatchat 服务
   ```
   - 访问 Web 界面(默认 `http://localhost:8501`),在模型选择中选择 `llama3.1`。

---

### **4. 常见问题排查**
#### **问题 1:Ollama 未响应**
- **原因**:Ollama 服务未启动或端口被占用。
- **解决**:
  ```bash
  # 检查 Ollama 进程
  ollama list
  # 重启服务
  ollama run llama3.1 --force
  ```

#### **问题 2:模型名称不匹配**
- **原因**:`model` 参数与 Ollama 中部署的模型名称不一致。
- **解决**:
  ```bash
  # 查看已部署的模型列表
  ollama list
  # 确保代码中的 model 参数与列表中的名称完全一致
  ```

#### **问题 3:路径或权限错误**
- **原因**:Ollama 的模型文件路径权限不足(常见于 Linux 系统)。
- **解决**:
  ```bash
  # 赋予模型目录读写权限
  chmod -R 755 /path/to/ollama/models
 

### **5. 完整配置示例(Langchain-Chatchat)**
#### **步骤**:
1. **修改配置文件**:
   - 在 `model_settings.yaml` 中添加 Ollama 配置:
     ```yaml
     DEFAULT_LLM_MODEL: "ollama_llama3.1"  # 设置默认模型
     OLLAMA_MODELS:
       - name: "ollama_llama3.1"
         model_name: "llama3.1"
         base_url: "http://localhost:11434"
     ```

2. **初始化知识库**:
   chatchat kb -r  # 重建向量数据库(可选)
   ```

3. **启动服务并测试**:
   chatchat start -a
   ```
   - 打开浏览器访问 `http://localhost:8501`,选择模型 `ollama_llama3.1` 进行对话。
from langchain_community.vectorstores import Chroma
from langchain_community.embeddings import OllamaEmbeddings
from langchain_community.chains import RetrievalQAWithSourcesChain

# 初始化 Ollama 的嵌入模型(如果支持)
embeddings = OllamaEmbeddings(
    model="llama3.1",
    base_url="http://localhost:11434"
)

# 加载 ChromaDB 向量库
 vectordb = Chroma(
     persist_directory="path/to/chroma/db",
     embedding_function=embeddings
 )

# 创建 RAG 链
retriever = vectordb.as_retriever()
qa_chain = RetrievalQAWithSourcesChain.from_chain_type(
    llm=ollama,
    retriever=retriever
)

# 执行查询
result = qa_chain({"question": "你的知识库中有哪些关于量子力学的内容?"})
print(result["answer"])
 

 

 
 

 

conda search langchain-openai --channel conda-forge

 


http://www.mrgr.cn/news/98617.html

相关文章:

  • 【c++深入系列】:new和delete运算符详解
  • 安卓手游逆向
  • mysql表类型查询
  • 通过建模和仿真进行高速连接器设计
  • Python爬虫第15节-2025今日头条街拍美图抓取实战
  • GIS开发笔记(7)结合osg及osgEarth实现不同高度下的三个圆形区域形成的三维覆盖轮廓区域绘制
  • **Microsoft Certified Professional(MCP)** 认证考试
  • argparse
  • 子函数嵌套的意义——以“颜色排序”为例(Python)
  • Python抽象基类
  • Function Calling是什么?
  • CS5346 - CHARTS: Chart with Point / Bar / Line / Box
  • 神经光子渲染:物理级真实感图像生成——从麦克斯韦方程到深度学习
  • Windows安装Ollama并指定安装路径(默认C盘)
  • Godot学习-创建简单动画
  • RK3568 更换显示logo
  • 人形机器人动作策略 ∼ 人类动作策略
  • 确保连接器后壳高性能互连的完整性
  • 从零到一:网站设计新手如何快速上手?
  • 关于系统架构思考,如何设计实现系统的高可用?