Skip to main content
本教程介绍如何开始使用 CLOVA Studio 提供的嵌入模型。有关 ClovaXEmbeddings 功能和配置选项的详细文档,请参阅 API 参考

概览

集成详情

设置

在使用 CLOVA Studio 提供的嵌入模型之前,您必须完成以下三个步骤。
  1. 创建 NAVER Cloud Platform 账户
  2. 申请使用 CLOVA Studio
  3. 创建要使用模型的 CLOVA Studio 测试应用或服务应用(参见此处
  4. 申请测试或服务 API 密钥(参见此处

凭证

使用您的 API 密钥设置 CLOVASTUDIO_API_KEY 环境变量。
import getpass
import os

if not os.getenv("CLOVASTUDIO_API_KEY"):
    os.environ["CLOVASTUDIO_API_KEY"] = getpass.getpass("Enter CLOVA Studio API Key: ")

安装

ClovaXEmbeddings 集成位于 langchain_naver 包中:
# install package
pip install -qU langchain-naver

实例化

现在我们可以实例化嵌入对象,并对查询或文档进行嵌入:
  • CLOVA Studio 中有多个可用的嵌入模型。请参阅此处了解更多详情。
  • 请注意,根据您的具体使用场景,您可能需要对嵌入向量进行归一化处理。
from langchain_naver import ClovaXEmbeddings

embeddings = ClovaXEmbeddings(
    model="clir-emb-dolphin"  # set with the model name of corresponding test/service app. Default is `clir-emb-dolphin`
)

索引与检索

嵌入模型通常用于检索增强生成(RAG)流程中,既用于数据索引,也用于后续检索。有关更详细的说明,请参阅我们的 RAG 教程 下面展示如何使用上面初始化的 embeddings 对象进行数据索引和检索。在此示例中,我们将在 InMemoryVectorStore 中索引并检索一个示例文档。
# Create a vector store with a sample text
from langchain_core.vectorstores import InMemoryVectorStore

text = "CLOVA Studio is an AI development tool that allows you to customize your own HyperCLOVA X models."

vectorstore = InMemoryVectorStore.from_texts(
    [text],
    embedding=embeddings,
)

# Use the vectorstore as a retriever
retriever = vectorstore.as_retriever()

# Retrieve the most similar text
retrieved_documents = retriever.invoke("What is CLOVA Studio?")

# show the retrieved document's content
retrieved_documents[0].page_content
'CLOVA Studio is an AI development tool that allows you to customize your own HyperCLOVA X models.'

直接使用

在底层实现中,向量存储和检索器分别调用 embeddings.embed_documents(...)embeddings.embed_query(...) 来为 from_texts 和检索 invoke 操作中使用的文本创建嵌入向量。 您可以直接调用这些方法,以满足您自己的使用场景需求。

嵌入单个文本

您可以使用 embed_query 嵌入单个文本或文档:
single_vector = embeddings.embed_query(text)
print(str(single_vector)[:100])  # Show the first 100 characters of the vector
[-0.094717406, -0.4077411, -0.5513184, 1.6024436, -1.3235079, -1.0720996, -0.44471845, 1.3665184, 0.

嵌入多个文本

您可以使用 embed_documents 嵌入多个文本:
text2 = "LangChain is a framework for building context-aware reasoning applications"
two_vectors = embeddings.embed_documents([text, text2])
for vector in two_vectors:
    print(str(vector)[:100])  # Show the first 100 characters of the vector
[-0.094717406, -0.4077411, -0.5513184, 1.6024436, -1.3235079, -1.0720996, -0.44471845, 1.3665184, 0.
[-0.25525448, -0.84877056, -0.6928286, 1.5867524, -1.2930486, -0.8166254, -0.17934391, 1.4236152, 0.

API 参考

有关 ClovaXEmbeddings 功能和配置选项的详细文档,请参阅 API 参考