首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >AI大模型企业应用实战(14)-langchain的Embedding

AI大模型企业应用实战(14)-langchain的Embedding

作者头像
JavaEdge
发布2025-06-01 09:26:38
发布2025-06-01 09:26:38
24900
代码可运行
举报
文章被收录于专栏:JavaEdgeJavaEdge
运行总次数:0
代码可运行

1 安装依赖

代码语言:javascript
代码运行次数:0
运行
复制
! pip install --upgrade langchain
! pip install --upgrade openai==0.27.8
! pip install -U langchain-openai
代码语言:javascript
代码运行次数:0
运行
复制
! pip show openai
! pip show langchain
! pip show langchain-openai

2 Embed_documents

代码语言:javascript
代码运行次数:0
运行
复制
# 1. 导入所需的库
from langchain_openai import OpenAIEmbeddings

# 创建 OpenAI 文本嵌入模型实例
e_model = OpenAIEmbeddings()

# 将给定的文本列表嵌入到向量空间中
ebeddings = e_model.embed_documents(
    [
        "你好",
        "你好啊",
        "你叫什么名字?",
        "我叫王大锤",
        "很高兴认识你大锤",
    ]
)

# 打印嵌入结果
print(ebeddings)

使用了 langchain_openai 库中的 OpenAIEmbeddings 类,将文本转换为向量表示:

  1. 导入所需的库
  2. 创建一个 OpenAIEmbeddings 实例,用于将文本转换为向量表示
  3. 定义一个包含五个中文句子的列表
  4. 使用 embed_documents 方法将给定的文本列表嵌入到向量空间中,并将结果存储在 ebeddings 变量中
  5. 打印嵌入结果

3 embed_query

代码语言:javascript
代码运行次数:0
运行
复制
embedded_query = e_model.embed_query("这段对话中提到了什么名字?")
embedded_query[:5]

4 嵌入向量缓存

代码语言:javascript
代码运行次数:0
运行
复制
!pip install -U langchain-community
代码语言:javascript
代码运行次数:0
运行
复制
# 导入所需的库
from langchain.embeddings import CacheBackedEmbeddings
from langchain.storage import LocalFileStore
from langchain.document_loaders import TextLoader
from langchain.text_splitter import CharacterTextSplitter
from langchain_openai import OpenAIEmbeddings

# 初始化 OpenAI 的嵌入模型
u_embeddings = OpenAIEmbeddings()

# 创建一个本地文件存储对象,用于缓存嵌入向量
fs = LocalFileStore("./cache/")

# 从字节存储中创建一个缓存嵌入对象
cached_embeddings = CacheBackedEmbeddings.from_bytes_store(
    u_embeddings,
    fs,
    namespace=u_embeddings.model,
)

# 列出缓存文件存储中的所有键
list(fs.yield_keys())

5 加载文档,切分文档

将切分文档向量化,并存储在缓存中

代码语言:javascript
代码运行次数:0
运行
复制
# 加载文档,使用 TextLoader 从文件中加载文本内容
raw_documents = TextLoader("letter.txt").load()

# 创建一个字符级别的文本分割器,用于将文档切分为固定大小的块
text_splitter = CharacterTextSplitter(chunk_size=620, chunk_overlap=0)

# 使用文本分割器将原始文档切分为多个小段(chunks)
documents = text_splitter.split_documents(raw_documents)
  1. 使用 TextLoader 类从文件中加载了名为 "letter.txt" 的文档
  2. 然后,创建了一个 CharacterTextSplitter 对象,该对象用于将文档切分为固定大小的块(chunk),这里设置为每个块包含 620 个字符,且相邻块之间没有重叠
  3. 最后,使用 split_documents 方法将原始文档切分为多个小段,并将结果存储在 documents 列表中
代码语言:javascript
代码运行次数:0
运行
复制
! pip install faiss-cup
代码语言:javascript
代码运行次数:0
运行
复制
from langchain.vectorstores import  FAISS
%timeit -r  1 -n 1 db= FAISS.from_documents(documents,cached_embeddings)
代码语言:javascript
代码运行次数:0
运行
复制
#查看缓存中的键
list(fs.yield_keys())

关注我,紧跟本系列专栏文章,咱们下篇再续!

作者简介:魔都架构师,多家大厂后端一线研发经验,在分布式系统设计、数据平台架构和AI应用开发等领域都有丰富实践经验。 各大技术社区头部专家博主。具有丰富的引领团队经验,深厚业务架构和解决方案的积累。 负责:

  • 中央/分销预订系统性能优化
  • 活动&券等营销中台建设
  • 交易平台及数据中台等架构和开发设计
  • 车联网核心平台-物联网连接平台、大数据平台架构设计及优化
  • LLM应用开发 目前主攻降低软件复杂性设计、构建高可用系统方向。

参考:

  • 编程严选网 本文由博客一文多发平台 OpenWrite 发布!
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-05-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1 安装依赖
  • 2 Embed_documents
  • 3 embed_query
  • 4 嵌入向量缓存
  • 5 加载文档,切分文档
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档