使用 OpenAI 的 text-embedding-3-large 模型生成文档向量

使用 OpenAI 的 text-embedding-3-large 模型生成文档向量

1. 模型特点

OpenAI 的 text-embedding-3-large 模型是功能最强大的嵌入模型之一,具有以下特点:

  • 高维嵌入:默认生成 3072 维的嵌入向量,可以捕捉更丰富的语义信息。
  • 支持长文档:能够处理长达 8192 个 token 的文档,适合处理长篇文本。
  • 多语言支持:在多语言任务中表现出色,适用于多种语言的文本处理。
  • 套娃表示学习:采用套娃表示学习技术(MRL),允许开发者通过指定维度参数来调整嵌入的大小,从而在性能和成本之间进行权衡。
2. 适用场景

text-embedding-3-large 模型适用于多种自然语言处理任务,包括但不限于:

  • 语义搜索:通过比较嵌入向量的相似度,实现文本内容的语义搜索。
  • 文档检索:在知识库中检索与查询最相关的文档。
  • 文本分类:将文本自动分类到预定义的类别中,如情感分析、新闻分类等。
  • 问答系统:理解用户的问题并从大量文本中找到最合适的答案。
  • 聚类分析:按主题对大量文本分组,如用户反馈分类。
  • 异常检测:识别很少相关的离群值。
  • 多样性测量:分析相似性分布。
3. 使用方法
3.1 初始化模型
from langchain_openai import OpenAIEmbeddings

# 初始化 OpenAIEmbeddings
embeddings = OpenAIEmbeddings(model="text-embedding-3-large")
3.2 嵌入单个文本
text = "This is a test document."

# 嵌入查询
query_result = embeddings.embed_query(text)
print("Query embedding (first 5 elements):", query_result[:5])
3.3 嵌入多个文档
documents = ["Document 1", "Document 2", "Document 3"]

# 嵌入文档
doc_result = embeddings.embed_documents(documents)
print("Document embedding (first 5 elements of first document):", doc_result[0][:5])
3.4 指定嵌入维度
# 创建 1024 维的嵌入
embeddings_1024 = OpenAIEmbeddings(model="text-embedding-3-large", dimensions=1024)

# 嵌入文档
embedded_text = embeddings_1024.embed_documents([text])
print("Embedding dimension:", len(embedded_text[0]))
4. 实际应用示例
4.1 语义搜索
from openai import OpenAI
import pandas as pd
import numpy as np

# 初始化 OpenAI 客户端
client = OpenAI()

# 定义获取嵌入的函数
def get_embedding(text, model="text-embedding-3-large"):
    text = text.replace("\n", " ")
    return client.embeddings.create(input=[text], model=model).data[0].embedding

# 创建数据框
df = pd.DataFrame({
    "text": ["This is a test document.", "Another document for testing.", "A third document."]
})

# 计算嵌入
df['embedding'] = df['text'].apply(lambda x: get_embedding(x, model='text-embedding-3-large'))

# 计算相似度
query_embedding = get_embedding("test document", model='text-embedding-3-large')
df['similarity'] = df['embedding'].apply(lambda x: np.dot(x, query_embedding))

# 按相似度排序
res = df.sort_values('similarity', ascending=False)
print(res)
4.2 文档检索
from langchain_community.vectorstores import FAISS

# 创建向量存储
vectorstore = FAISS.from_documents(documents, embeddings)

# 检索最相关的文档
query = "test document"
docs = vectorstore.similarity_search(query, k=3)

for doc in docs:
    print(doc.page_content)

总结

text-embedding-3-large 模型在处理长文档和多语言任务时表现出色,适用于多种自然语言处理任务。通过指定维度参数,可以在性能和成本之间进行权衡,灵活应用于不同的场景。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值