1 安装依赖
! pip install --upgrade langchain
! pip install --upgrade openai==0.27.8
! pip install -U langchain-openai
! pip show openai
! pip show langchain
! pip show langchain-openai
2 Embed_documents
# 1. 导入所需的库
from langchain_openai import OpenAIEmbeddings
# 创建 OpenAI 文本嵌入模型实例
e_model = OpenAIEmbeddings()
# 将给定的文本列表嵌入到向量空间中
ebeddings = e_model.embed_documents(
[
"你好",
"你好啊",
"你叫什么名字?",
"我叫王大锤",
"很高兴认识你大锤",
]
)
# 打印嵌入结果
print(ebeddings)
使用了 langchain_openai 库中的 OpenAIEmbeddings 类,将文本转换为向量表示:
- 导入所需的库
- 创建一个 OpenAIEmbeddings 实例,用于将文本转换为向量表示
- 定义一个包含五个中文句子的列表
- 使用 embed_documents 方法将给定的文本列表嵌入到向量空间中,并将结果存储在 ebeddings 变量中
- 打印嵌入结果
3 embed_query
embedded_query = e_model.embed_query("这段对话中提到了什么名字?")
embedded_query[:5]
4 嵌入向量缓存
!pip install -U langchain-community
# 导入所需的库
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 加载文档,切分文档
将切分文档向量化,并存储在缓存中
# 加载文档,使用 TextLoader 从文件中加载文本内容
raw_documents = TextLoader("letter.txt").load()
# 创建一个字符级别的文本分割器,用于将文档切分为固定大小的块
text_splitter = CharacterTextSplitter(chunk_size=620, chunk_overlap=0)
# 使用文本分割器将原始文档切分为多个小段(chunks)
documents = text_splitter.split_documents(raw_documents)
- 使用 TextLoader 类从文件中加载了名为 “letter.txt” 的文档
- 然后,创建了一个 CharacterTextSplitter 对象,该对象用于将文档切分为固定大小的块(chunk),这里设置为每个块包含 620 个字符,且相邻块之间没有重叠
- 最后,使用 split_documents 方法将原始文档切分为多个小段,并将结果存储在 documents 列表中
! pip install faiss-cup
from langchain.vectorstores import FAISS
%timeit -r 1 -n 1 db= FAISS.from_documents(documents,cached_embeddings)
#查看缓存中的键
list(fs.yield_keys())
关注我,紧跟本系列专栏文章,咱们下篇再续!
作者简介:魔都架构师,多家大厂后端一线研发经验,在分布式系统设计、数据平台架构和AI应用开发等领域都有丰富实践经验。
各大技术社区头部专家博主。具有丰富的引领团队经验,深厚业务架构和解决方案的积累。
负责:
- 中央/分销预订系统性能优化
- 活动&券等营销中台建设
- 交易平台及数据中台等架构和开发设计
- 车联网核心平台-物联网连接平台、大数据平台架构设计及优化
- LLM应用开发
目前主攻降低软件复杂性设计、构建高可用系统方向。
参考: