conda使用记录

本文安装环境mac os,m系列处理器;python版本:3.12

之前使用的是uv(pip),但是安装faiss的时候一直报各种各样的错误,所以选择使用conda

安装conda

  1. 下载并安装Miniforge
bash 复制代码
# 1. 下载适配的 Miniforge 安装包(国内镜像加速)
curl -L https://mirrors.tuna.tsinghua.edu.cn/github-release/conda-forge/miniforge/LatestRelease/Miniforge3-MacOSX-arm64.sh -o Miniforge3.sh

# 2. 赋予执行权限
chmod +x Miniforge3.sh

# 3. 静默安装(-b 不弹窗,-p 指定安装路径,推荐用户目录)
bash Miniforge3.sh -b -p ~/miniforge3
  1. 配置 Conda(解决国内下载慢)
bash 复制代码
# 1. 激活 Conda 环境(临时生效)
source ~/miniforge3/bin/activate

# 2. 配置清华源(加速 Conda 包下载,2026年可用)
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/r/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/msys2/
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 config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/bioconda/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/menpo/
conda config --set show_channel_urls yes

# 3. 配置 pip 清华源(后续安装 LangChain 用)
mkdir -p ~/.pip
echo "[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
trusted-host = pypi.tuna.tsinghua.edu.cn" > ~/.pip/pip.conf
  1. 验证安装是否成功
bash 复制代码
# 1. 重启终端,执行激活命令
source ~/miniforge3/bin/activate

# 2. 查看 Conda 版本
conda --version
# 输出类似:conda 24.9.2 即成功

# 3. 查看当前环境
conda info --envs
# 输出包含 base 环境,说明安装完成
  1. 自动激活 Conda(可选)
bash 复制代码
echo 'source ~/miniforge3/bin/activate' >> ~/.zshrc
source ~/.zshrc
  1. 创建自定义专属环境,这里叫ai_tag
bash 复制代码
# 1. 创建 Python 3.12 环境(命名为 ai_rag)
conda create -n ai_rag python=3.12 -y

# 2. 激活该环境
conda activate ai_rag

卸载conda

bash 复制代码
rm -rf ~/miniforge3
sed -i '' '/miniforge3/d' ~/.zshrc  # 移除自动激活配置

conda安装Faiss和numpy

bash 复制代码
conda install numpy=1.26.4 faiss-cpu=1.9.0 -y

conda安装langchain

  1. 激活环境
  2. 用 pip安装 LangChain 核心包
bash 复制代码
pip install langchain langchain-openai。
  1. 用 pip 安装 LangChain 扩展包(必装)
    • LangChain 的 OpenAI 对接、向量库集成等核心功能依赖扩展包,这些包仅在 PyPI 上提供,在 Conda 环境中直接用 pip 安装即可(会自动适配当前 Conda 环境):
bash 复制代码
# 安装核心扩展包(适配你的 RAG 开发)
pip install langchain-openai langchain-community pymilvus -i https://pypi.tuna.tsinghua.edu.cn/simple

#langchain-openai:对接 OpenAI GPT/Embeddings(RAG 核心);
#langchain-community:集成 FAISS/Milvus 等向量库;
#pymilvus:对接 Milvus 向量数据库(可选,若用 Milvus 则装);
#清华源:解决国内下载慢的问题。
  1. 验证安装是否成功
    • 创建测试文件 test_langchain.py,运行以下代码验证:
bash 复制代码
"""
验证代码(适配版本:langchain 1.2.6 + langchain-community 0.4.1 + langchain-openai 1.1.7)
修复:MockEmbeddings 继承 LangChain 官方 Embeddings 抽象类,符合 0.4.1 版本规范
"""
import sys
import subprocess
import numpy as np
import faiss

# ========== 核心导入(严格适配你的版本) ==========
# LangChain 核心
import langchain
import langchain_core
# 关键:导入 LangChain 官方 Embeddings 抽象类
from langchain_core.embeddings import Embeddings
# FAISS 集成(langchain-community 0.4.1 规范)
from langchain_community.vectorstores import FAISS as LangChainFAISS
# 文本拆分器(1.1.0 版本)
from langchain_text_splitters import CharacterTextSplitter

# ========== 版本获取函数 ==========
def get_pkg_version(pkg_name: str) -> str:
    """通过 pip show 获取包版本,避免 __version__ 缺失"""
    try:
        result = subprocess.run(
            [sys.executable, "-m", "pip", "show", pkg_name],
            capture_output=True,
            text=True,
            check=True
        )
        for line in result.stdout.split("\n"):
            if line.startswith("Version:"):
                return line.split(":", 1)[1].strip()
        return "版本解析失败"
    except:
        return "包未安装"

# ========== 1. 版本与环境验证 ==========
print("="*60 + " 环境与版本验证 " + "="*60)
print(f"✅ Python 路径:{sys.executable}")
print(f"✅ NumPy 版本:{np.__version__}")
print(f"✅ FAISS 版本:{faiss.__version__}")
print(f"✅ LangChain 核心版本:{langchain.__version__}")
print(f"✅ LangChain-Core 版本:{langchain_core.__version__}")
print(f"✅ LangChain-Community 版本:{get_pkg_version('langchain-community')}")
print(f"✅ LangChain-OpenAI 版本:{get_pkg_version('langchain-openai')}")
print(f"✅ LangChain-Text-Splitters 版本:{get_pkg_version('langchain-text-splitters')}")
print(f"✅ LangChain-Classic 版本:{get_pkg_version('langchain-classic')}")
print("="*128)

# ========== 2. FAISS 基础功能验证 ==========
print("\n" + "="*60 + " FAISS 核心功能验证 " + "="*60)
VECTOR_DIM = 1536  # 适配 OpenAI Embeddings 1.1.7 版本默认维度
test_vectors = np.random.random((50, VECTOR_DIM)).astype(np.float32)

# 构建 FAISS 索引
faiss_index = faiss.IndexFlatL2(VECTOR_DIM)
faiss_index.add(test_vectors)
print(f"✅ FAISS 索引创建成功,插入 {faiss_index.ntotal} 个向量")

# 测试相似检索
query_vec = np.random.random((1, VECTOR_DIM)).astype(np.float32)
distances, indices = faiss_index.search(query_vec, k=3)
print(f"✅ Top3 相似向量索引:{indices[0]}")
print(f"✅ 对应距离(越小越相似):{distances[0]}")
print("="*128)

# ========== 3. 适配 LangChain 规范的 Mock Embeddings ==========
class MockOpenAIEmbeddings(Embeddings):
    """
    修复核心:继承 LangChain 官方 Embeddings 抽象类
    实现所有必需方法,符合 0.4.1 版本的调用规范
    """
    def embed_documents(self, texts: list[str]) -> list[list[float]]:
        """批量嵌入文档(必需实现)"""
        return [np.random.random(VECTOR_DIM).tolist() for _ in texts]

    def embed_query(self, text: str) -> list[float]:
        """嵌入查询文本(必需实现)"""
        return np.random.random(VECTOR_DIM).tolist()

    # 可选:实现 __call__ 方法,兼容旧版可调用逻辑
    def __call__(self, text: str) -> list[float]:
        return self.embed_query(text)

# ========== 4. LangChain 核心功能验证 ==========
print("\n" + "="*60 + " LangChain 核心功能验证 " + "="*60)
# 4.1 文本拆分器
text_splitter = CharacterTextSplitter(
    chunk_size=200,
    chunk_overlap=20,
    separator="\n"
)
test_text = """
滑雪SSR是短回转半径的滑雪板,板腰窄、转弯灵活,非常适合新手练习基础转弯动作。
FAISS是Meta(原Facebook)开发的高效向量检索库,支持亿级向量的快速相似性检索,是RAG架构的核心组件。
LangChain 1.2.6 兼容 langchain-core 1.2.7,langchain-community 0.4.1 优化了第三方工具集成逻辑。
langchain-openai 1.1.7 适配了 OpenAI 最新的 Embeddings API,默认向量维度为1536。
Conda环境适合安装需要编译的Python包(如FAISS、NumPy),避免本地编译失败的问题。
"""
text_chunks = text_splitter.split_text(test_text.strip())
print(f"✅ 文本拆分完成,共生成 {len(text_chunks)} 个片段:")
for i, chunk in enumerate(text_chunks, 1):
    print(f"   {i}. {chunk[:50]}..." if len(chunk) > 50 else f"   {i}. {chunk}")

# 4.2 初始化合规的 Embeddings 对象
embeddings = MockOpenAIEmbeddings()

# 4.3 构建 LangChain-FAISS 向量库(修复核心)
vector_db = LangChainFAISS.from_texts(
    texts=text_chunks,
    embedding=embeddings,  # 传入合规的 Embeddings 对象
    normalize_L2=True
)
print(f"\n✅ LangChain-FAISS 向量库构建成功,包含 {vector_db.index.ntotal} 个向量")

# 4.4 RAG 相似检索(无报错)
query = "新手适合用滑雪SSR吗?"
similar_docs = vector_db.similarity_search(
    query=query,
    k=2,
    score_threshold=0.8
)
print(f"\n✅ 检索查询:{query}")
print(f"✅ 找到 {len(similar_docs)} 条相关文档:")
for i, doc in enumerate(similar_docs, 1):
    print(f"   {i}. 内容:{doc.page_content}")
    print(f"      元数据:{doc.metadata}\n")

# ========== 5. 最终验证结果 ==========
print("="*128)
print("\n🎉 所有验证项均通过!关键修复总结:")
print(f"   ✅ MockEmbeddings 继承 LangChain 官方 Embeddings 抽象类")
print(f"   ✅ 实现 embed_documents/embed_query 必需方法")
print(f"   ✅ 新增 __call__ 方法,兼容可调用逻辑")
print(f"   ✅ 适配 langchain-community 0.4.1 的 Embeddings 规范")
相关推荐
寻梦csdn1 天前
pycharm+miniconda兼容问题
ide·python·pycharm·conda
hampeter2 天前
【填坑指南】Trae/VS Code 远程连接 Ubuntu,终端总是自动激活特定的 Conda 环境?三招教你彻底解决!
linux·ubuntu·conda·trae
403240732 天前
【Jetson开发避坑】虚拟环境(Conda/Venv)调用系统底层OpenCV与TensorRT的终极指南
人工智能·opencv·conda
qinyia3 天前
如何彻底卸载macOS上的conda并清理环境变量配置
macos·conda
weixin_421585014 天前
Mamba与Conda
conda
qq_273900234 天前
Apptainer 将 Ubuntu 本地 Conda 环境打包为 Singularity(SIF)镜像
linux·ubuntu·conda
肆意飞扬5 天前
Python篇:使用conda、pip的一些命令记录
python·conda·pip
没事儿写两篇7 天前
Anaconda 的开源替代软件 Miniforge
开源·conda·miniconda·miniforge
次旅行的库7 天前
不能将windows本地虚拟环境打包到实验室服务器
linux·windows·conda
云和数据.ChenGuang9 天前
python对接mysql和模型类的故障
数据库·python·mysql·oracle·conda·virtualenv