以编程方式使用文档

本笔记本介绍了如何开始使用 CLOVA Studio 提供的嵌入模型。详细的文档请参阅 ClovaXEmbeddings 功能和配置选项,请参阅 API 参考.

概述

集成详情

提供商
Naverlangchain-naver

设置

在使用 CLOVA Studio 提供的嵌入模型之前,您必须完成以下三个步骤。

  1. 创建 NAVER Cloud Platform 账户
  2. 申请使用 CLOVA Studio
  3. 创建一个 CLOVA Studio 测试应用或服务应用以使用模型(参见 CLOVA Studio 测试应用设置.)
  4. 颁发测试或服务 API 密钥(参见 CLOVA Studio API 密钥指南.)

凭证

设置 CLOVASTUDIO_API_KEY 环境变量并填入您的 API 密钥。

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

安装

ClovaXEmbeddings 集成位于 langchain_naver package:

# install package
pip install -qU langchain-naver

实例化

现在我们可以实例化嵌入对象并嵌入查询或文档:

  • - CLOVA Studio 中有多种嵌入模型可用。参见 CLOVA Studio 嵌入 API 文档 了解更多详情。
  • - 请注意,根据您的具体用例,您可能需要对嵌入进行归一化处理。
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 参考.