MacBook上从零搞定LangChain:Python环境、ChromaDB安装与第一个向量数据库Demo
2026/6/10 6:08:23 网站建设 项目流程

MacBook上从零搞定LangChain:Python环境、ChromaDB安装与第一个向量数据库Demo

刚拿到新Mac的你,是否对AI应用开发充满好奇却不知从何入手?LangChain作为当前最热门的AI应用开发框架之一,能帮你快速构建基于大语言模型的智能应用。本文将带你从零开始,在MacBook上搭建完整的LangChain开发环境,并完成第一个向量数据库Demo。无需任何前置经验,跟着步骤操作,30分钟内就能看到成果。

1. 环境准备:打造坚实的开发基础

在开始LangChain之旅前,确保你的MacBook具备完善的开发环境至关重要。许多初学者失败的原因往往在于基础环境配置不当。我们将从Python环境开始,一步步构建稳定的开发基础。

1.1 Python环境配置

Mac系统自带的Python版本通常较旧,我们需要安装最新版的Python 3。推荐使用Homebrew进行安装,这是Mac上最受欢迎的包管理工具。

首先检查当前Python版本:

python3 --version

如果版本低于3.8,建议升级。安装Homebrew(如果尚未安装):

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

安装Python 3:

brew install python

常见问题解决:

  • 如果Homebrew更新卡住,可以按Control+C跳过更新直接安装
  • 安装完成后,可能需要将brew的Python路径加入环境变量:
echo 'export PATH="/usr/local/opt/python/libexec/bin:$PATH"' >> ~/.zshrc source ~/.zshrc

1.2 包管理工具pip

Python安装完成后,确保pip是最新版本:

python3 -m pip install --upgrade pip

为加速后续安装,可以配置国内镜像源:

pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple

2. LangChain与ChromaDB安装

2.1 核心组件安装

LangChain生态包含多个组件,我们将安装最核心的部分:

pip install langchain chromadb sentence-transformers

安装技巧:

  • 如果遇到超时,可以添加--default-timeout=100参数
  • 网络不稳定时,可以使用-i参数临时指定镜像源

2.2 验证安装

创建一个简单的Python脚本验证安装是否成功:

import langchain import chromadb print("所有组件安装成功!")

保存为test_install.py并运行:

python3 test_install.py

3. 第一个向量数据库Demo

3.1 创建内存型向量数据库

让我们从最简单的内存型向量数据库开始:

import chromadb # 创建客户端 chroma_client = chromadb.Client() # 创建集合(类似数据库表) collection = chroma_client.create_collection(name="my_first_collection") # 添加文档 collection.add( documents=["苹果是一种水果", "香蕉富含钾元素", "汽车需要汽油才能行驶"], metadatas=[{"source": "水果知识"}, {"source": "营养学"}, {"source": "交通工具"}], ids=["id1", "id2", "id3"] ) # 查询 results = collection.query( query_texts=["什么水果富含钾元素?"], n_results=1 ) print(results)

这段代码创建了一个临时向量数据库,添加了三条文档,并执行了相似性查询。你应该能看到返回了与"钾元素"最相关的文档。

3.2 持久化向量数据库

内存型数据库关闭后数据会丢失,下面我们创建持久化的数据库:

import chromadb from chromadb.config import Settings # 持久化目录 persist_directory = "my_chroma_db" # 客户端配置 client = chromadb.Client(Settings( chroma_db_impl="duckdb+parquet", persist_directory=persist_directory )) # 创建集合 collection = client.create_collection("persisted_collection") # 添加数据 collection.add( documents=["Python是一种解释型语言", "Java使用虚拟机运行", "Go语言由Google开发"], metadatas=[{"type": "语言特性"}, {"type": "运行机制"}, {"type": "历史"}], ids=["lang1", "lang2", "lang3"] ) # 显式持久化 client.persist()

现在即使关闭程序,数据也会保存在my_chroma_db目录中。下次启动时可以这样加载:

# 重新加载 client = chromadb.Client(Settings( chroma_db_impl="duckdb+parquet", persist_directory=persist_directory )) collection = client.get_collection("persisted_collection")

4. 进阶:结合LangChain构建知识库

4.1 文档加载与处理

LangChain提供了强大的文档处理能力。让我们加载一个文本文件并存入向量数据库:

首先创建一个knowledge.txt文件,内容如下:

LangChain是一个用于开发大语言模型应用的框架。 ChromaDB是一个开源的向量数据库。 MacBook Pro是苹果公司的高端笔记本电脑。

然后使用以下代码处理:

from langchain.document_loaders import TextLoader from langchain.text_splitter import CharacterTextSplitter from langchain.vectorstores import Chroma from langchain.embeddings import HuggingFaceEmbeddings # 加载文档 loader = TextLoader('knowledge.txt') documents = loader.load() # 文档分割 text_splitter = CharacterTextSplitter(chunk_size=100, chunk_overlap=20) texts = text_splitter.split_documents(documents) # 使用开源嵌入模型 embeddings = HuggingFaceEmbeddings() # 创建向量存储 db = Chroma.from_documents(texts, embeddings, persist_directory="langchain_chroma") db.persist()

4.2 实现语义搜索

现在我们可以基于语义进行搜索了:

# 从磁盘加载 db = Chroma(persist_directory="langchain_chroma", embedding_function=embeddings) # 语义搜索 query = "苹果公司生产什么电脑?" docs = db.similarity_search(query) print(docs[0].page_content)

这个例子展示了如何从知识库中检索与问题语义相关的内容,而不是简单的关键词匹配。

5. 常见问题与优化建议

5.1 安装问题排查

  • Homebrew安装慢:可以更换国内源:

    cd "$(brew --repo)" git remote set-url origin https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/brew.git
  • pip安装超时:增加超时时间并重试:

    pip --default-timeout=1000 install [package]

5.2 性能优化技巧

  • 对于中文文本,推荐使用text2vec系列嵌入模型:

    from langchain.embeddings import HuggingFaceEmbeddings embeddings = HuggingFaceEmbeddings(model_name="GanymedeNil/text2vec-large-chinese")
  • 批量插入数据时,可以先将文档处理成列表再一次性添加,效率更高

5.3 实际应用建议

  • 对于生产环境,考虑使用客户端-服务器模式的ChromaDB部署
  • 重要数据定期备份persist_directory内容
  • 文档分割时,根据内容特点调整chunk_size和chunk_overlap参数

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询