准备开发环境是构建检索增强生成(RAG)系统的主要步骤。这包括设置一个独立的Python环境,并安装提供检索、生成和协调构建模块所需的库。确保安装了正确的工具是构建一个可用流水线的第一步。创建虚拟环境在Python开发中,使用虚拟环境管理项目依赖是一个标准做法。这可以避免不同项目所需库之间的冲突。如果你还不熟悉venv,它是Python内置的轻量级虚拟环境创建工具。打开你的终端或命令行提示符,并导航到你的项目目录。然后,创建一个虚拟环境(我们这里命名为rag-env,但你可以选择任何名字):python -m venv rag-env接下来,激活环境。激活命令根据你的操作系统略有不同:macOS / Linux:source rag-env/bin/activate ```Windows (Command Prompt):rag-env\Scripts\activate.bat ```Windows (PowerShell):rag-env\Scripts\Activate.ps1 ```一旦激活,你的终端提示符通常会改变,表明你正在rag-env环境中工作。从现在起安装的所有包都将是此环境的本地包。安装核心库虚拟环境激活后,我们可以安装构建基本RAG流水线所需的Python包。我们将使用Python包安装器pip。对于这个入门课程,我们将使用RAG生态系统中常用的库。这些包括:协调框架: LangChain或LlamaIndex之类的库有助于构建RAG流水线,连接不同组件(检索器、生成器、数据加载器)。我们的示例中将使用LangChain。大型语言模型集成: 一个用于与将作为我们生成器的大型语言模型(LLM)交互的库。我们将安装与OpenAI模型交互所需的包,但其他提供商(如Hugging Face、Anthropic、Cohere)也有类似的包。嵌入模型: 一个用于为我们的文档和查询生成向量嵌入的库。sentence-transformers是访问可本地运行的高质量开放模型的常用选择。另外,也可以使用提供商如OpenAI的嵌入API。向量存储: 一个用于存储并高效搜索向量嵌入的库。ChromaDB是一个简单、本地的向量存储,适合入门。其他选项如FAISS(来自Facebook AI AI)也广泛使用。文档加载器: 用于从各种文件格式加载数据的库。加载PDF文档需要pypdf。实用工具: 其他有用的库,例如python-dotenv用于安全地管理API密钥,以及tiktoken专门用于OpenAI模型计算token。让我们使用一个pip命令来安装这些包:pip install langchain langchain-openai langchain-community sentence-transformers chromadb python-dotenv tiktoken pypdf让我们简单说明一下我们安装了什么:langchain: LangChain框架的核心库。langchain-openai: 为OpenAI模型(LLM和嵌入)提供特定的集成。langchain-community: 包含许多社区维护的集成,包括文档加载器和ChromaDB等向量存储。sentence-transformers: 用于使用Hugging Face Hub中的模型生成文本嵌入。chromadb: Chroma向量数据库的客户端库。python-dotenv: 一个实用工具,用于从.env文件加载环境变量(对API密钥有用)。tiktoken: OpenAI的tokenizer,有助于计算token以管理上下文窗口。pypdf: 一个用于从PDF文件读取文本内容的库。根据你的具体需求,或者如果你选择其他组件(例如,不同的LLM提供商或向量存储),你可能需要安装额外的包。LangChain或你选择的库的文档将指明所需的安装。管理API密钥许多大型语言模型和嵌入服务(如OpenAI的)需要API密钥进行身份验证。重要的是不要将这些密钥直接硬编码到你的脚本中。标准做法是使用环境变量。python-dotenv库有助于管理这一点。在你的项目根目录(与Python脚本并列)中创建一个名为.env的文件。将你的API密钥添加到此文件:# .env file OPENAI_API_KEY="sk-YourSecretOpenAIKeyGoesHere" # Add other keys if needed, e.g.: # HUGGINGFACEHUB_API_TOKEN="hf_YourHuggingFaceToken"请务必将"sk-YourSecretOpenAIKeyGoesHere"替换为你的实际密钥。重要提示: 将.env添加到你的.gitignore文件中,以避免意外地将你的密钥提交到版本控制。在你的Python代码中,你可以在脚本的早期加载这些变量:import os from dotenv import load_dotenv # Load environment variables from .env file load_dotenv() # Access the API key openai_api_key = os.getenv("OPENAI_API_KEY") # You can now use this variable when configuring LLM clients # Example: # llm = OpenAI(api_key=openai_api_key) if openai_api_key is None: print("Warning: OPENAI_API_KEY not found in environment variables.") # Handle the case where the key is missing, perhaps by exiting or using a fallback.在开始时加载变量,可以使它们通过os.getenv()在整个应用程序中可用。验证你可以通过在Python解释器或脚本中尝试导入核心库来快速验证它们是否已正确安装:import langchain import langchain_openai import langchain_community import sentence_transformers import chromadb import tiktoken import pypdf # Note: pypdf is the package name, used like this in code print("Core RAG libraries imported successfully!")如果此代码运行没有出现ModuleNotFoundError,则你的环境很可能已正确配置并安装了基本包。环境准备就绪,所需库也已安装,我们现在可以进行流水线的第一个功能部分:实现检索器组件,这包括加载数据、生成嵌入以及设置向量存储以进行相似度搜索。