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

LangChain实战(七):Text Embedding Models与Vector Stores

本文是《LangChain实战课》系列的第七篇,将深入探讨LangChain中的两个核心概念:文本嵌入模型(Embedding Models)和向量数据库(Vector Stores)。你将学习如何将文本转换为数值向量,并利用向量数据库进行高效的相似性搜索,这是构建检索增强生成(RAG)应用的基石。

前言

在前一篇文章中,我们学习了如何加载和分割文档,得到了结构化的文本块。然而,计算机无法直接理解文本的含义。为了让机器能够“理解”和“比较”文本,我们需要将文本转换为数值表示——即嵌入向量(Embeddings),并将其存储在专门的数据库中进行高效检索。今天,我们将深入这个核心环节。

文本嵌入(Text Embedding)模型介绍

什么是文本嵌入?

文本嵌入是一种将单词、句子或整个文档转换为数值向量(一组数字)的技术。这些向量在高维空间中的位置和距离能够捕捉文本的语义信息。

核心思想:语义相似的文本,其对应的向量在向量空间中的距离也更近。

为什么需要嵌入?

  1. 机器可读:将人类语言转换为计算机可以处理和计算的数值形式。
  2. 语义捕捉:好的嵌入模型能够理解 synonyms(同义词)、context(上下文)和 semantic
    relationships(语义关系)。
  3. 高效检索:基于向量相似性的搜索比基于关键词的搜索更加智能和灵活。

常见的嵌入模型

  • OpenAItext-embedding-ada-002 (广泛使用,性能强劲)
  • Hugging Facesentence-transformers 系列(如 all-MiniLM-L6-v2,可本地部署)
  • Cohere:提供多语言和专门优化的嵌入模型
  • 本地模型:如 BGEM3E 等,支持私有化部署

环境准备与安装

在开始之前,我们需要安装必要的库。根据你选择的嵌入模型和向量数据库,安装对应的依赖。

# 安装 LangChain 核心库
pip install langchain# 安装 OpenAI 嵌入模型(如果使用 OpenAI)
pip install openai# 安装 HuggingFace 嵌入模型(如果使用 HuggingFace)
pip install sentence-transformers# 安装向量数据库
# 为了演示,我们安装 Chroma(轻量级)和 FAISS(Facebook 开发)
pip install chromadb
pip install faiss-cpu # 如果是 CPU 环境
# pip install faiss-gpu # 如果是 GPU 环境# 安装其他依赖
pip install python-dotenv tiktoken

请确保你的环境变量(如 OPENAI_API_KEY)已正确设置。

使用Embedding模型将文本转换为向量

LangChain 提供了统一的接口来使用各种嵌入模型。

1. 使用 OpenAI 嵌入模型

import os
from dotenv import load_dotenv
from langchain.embeddings.openai import OpenAIEmbeddings# 加载环境变量
load_dotenv()# 初始化 OpenAI 嵌入模型
embeddings = OpenAIEmbeddings(model="text-embedding-ada-002",openai_api_key=os.getenv("OPENAI_API_KEY")
)# 将文本转换为向量
text = "机器学习是人工智能的一个分支"
vector = embeddings.embed_query(text)
print(f"向量维度: {len(vector)}")
print(f"向量前10维: {vector[:10]}...")

2. 使用 Hugging Face 嵌入模型(本地免费)

from langchain.embeddings import HuggingFaceEmbeddings# 初始化 Hugging Face 嵌入模型
# 使用 all-MiniLM-L6-v2 模型,它是一个轻量且高效的句子转换模型
embeddings_hf = HuggingFaceEmbeddings(model_name="sentence-transformers/all-MiniLM-L6-v2",model_kwargs={'device': 'cpu'}, # 使用 CPUencode_kwargs=
http://www.dtcms.com/a/359819.html

相关文章:

  • 嵌入式ARM程序高级调试技能:19.qumu arm elf无法生成coredump
  • 829作业
  • DAY17-新世纪DL(DeepLearning/深度学习)战士:Q(机器学习策略)2
  • Claude Code干翻Cursor后,轮到AI浏览器了
  • 组件通信终极指南:从Props Drilling到Context API
  • MPI-NCCL-TEST 训练自检,基础通信和可用的机器
  • NM:微生物组数据分析的规划与描述
  • GDPU操作系统实验:生产者消费者问题
  • Matplotlib:让数据在Python中跳舞的魔法画笔![特殊字符]
  • 5.【C++进阶】红黑树
  • C++从入门到实战(二十)详细讲解C++List的使用及模拟实现
  • Qt中解析XML文件
  • 基于muduo库的图床云共享存储项目(四)
  • Luma 视频生成 API 对接说明
  • 编写一个用scala写的spark程序从本地读取数据,写到本地
  • 基于Matlab元胞自动机的强场电离过程模拟与ADK模型分析
  • 【Linux】模拟实现Shell(上)
  • 分享一个实用的B站工具箱(支持音视频下载等功能)
  • 【Canvas技法】绘制横向多色旗和竖向多色旗
  • 008.LangChain 输出解析器
  • 备份压缩存储优化方案:提升效率与节省空间的完整指南
  • 新手首次操作SEO核心要点
  • 线程池常见面试问答
  • 【Java实战⑩】Java 集合框架实战:Set与Map的奇妙之旅
  • 基于三维反投影矫正拼接视频
  • 数据结构(04)—— 栈和队列
  • 使用node-red+opencv+mqtt实现相机图像云端查看
  • 零基础入门AutoSar中的ARXML文件
  • Dify 从入门到精通(第 67/100 篇):Dify 的高可用性部署(进阶篇)
  • 从零开始写个deer-flow-mvp-第一天