! 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
# 1. 导入所需的库
from langchain_openai import OpenAIEmbeddings
# 创建 OpenAI 文本嵌入模型实例
e_model = OpenAIEmbeddings()
# 将给定的文本列表嵌入到向量空间中
ebeddings = e_model.embed_documents(
[
"你好",
"你好啊",
"你叫什么名字?",
"我叫王大锤",
"很高兴认识你大锤",
]
)
# 打印嵌入结果
print(ebeddings)
使用了 langchain_openai 库中的 OpenAIEmbeddings 类,将文本转换为向量表示:
embedded_query = e_model.embed_query("这段对话中提到了什么名字?")
embedded_query[:5]
!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())
将切分文档向量化,并存储在缓存中
# 加载文档,使用 TextLoader 从文件中加载文本内容
raw_documents = TextLoader("letter.txt").load()
# 创建一个字符级别的文本分割器,用于将文档切分为固定大小的块
text_splitter = CharacterTextSplitter(chunk_size=620, chunk_overlap=0)
# 使用文本分割器将原始文档切分为多个小段(chunks)
documents = text_splitter.split_documents(raw_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应用开发等领域都有丰富实践经验。 各大技术社区头部专家博主。具有丰富的引领团队经验,深厚业务架构和解决方案的积累。 负责:
参考: