Skip to main content
Open In ColabOpen on GitHub

DatabricksEmbeddings

Databricks Lakehouse Platform unifies data, analytics, and AI on one platform.

本笔记本为快速入门 Databricks 嵌入模型 提供了简要概述。有关所有 DatabricksEmbeddings 功能和配置的详细文档,请参阅 API 参考

概览

集成详情

DatabricksEmbeddingsdatabricks-langchain

支持的方法

DatabricksEmbeddings 支持 Embeddings 类的所有方法,包括异步 API。

端点要求

服务端点 DatabricksEmbeddings 所包装的必须具有与 OpenAI 兼容的嵌入输入/输出格式 (参考)。只要输入格式兼容,DatabricksEmbeddings 可用于托管在 Databricks Model Serving 上的任何类型的端点:

  1. 基础模型 - 收集了最先进的基础模型列表,例如 BAAI 普通嵌入(BGE)。这些端点无需任何设置即可在您的 Databricks 工作区中直接使用。
  2. 自定义模型 - 您还可以通过 MLflow 将自定义嵌入模型部署到服务端点,使用您选择的框架,例如 LangChain、Pytorch、Transformers 等。
  3. 外部模型 - Databricks 端点可以作为代理服务托管在 Databricks 之外的模型,例如专有的模型服务,如 OpenAI 的 text-embedding-3。

设置

要访问 Databricks 模型,你需要创建一个 Databricks 账户、设置凭据(仅当你在 Databricks 工作区之外时),并安装所需的包。

凭据(仅当您在Databricks外部时需要)

如果在 Databricks 内运行 LangChain 应用程序,可以跳过此步骤。

否则,您需要手动将 Databricks 工作区主机名和个人访问令牌分别设置为环境变量 DATABRICKS_HOSTDATABRICKS_TOKEN。有关如何获取访问令牌,请参阅 身份验证文档

import getpass
import os

os.environ["DATABRICKS_HOST"] = "https://your-workspace.cloud.databricks.com"
if "DATABRICKS_TOKEN" not in os.environ:
os.environ["DATABRICKS_TOKEN"] = getpass.getpass(
"Enter your Databricks access token: "
)

安装

LangChain Databricks 集成位于 databricks-langchain 包中:

%pip install -qU databricks-langchain

实例化

from databricks_langchain import DatabricksEmbeddings

embeddings = DatabricksEmbeddings(
endpoint="databricks-bge-large-en",
# Specify parameters for embedding queries and documents if needed
# query_params={...},
# document_params={...},
)

索引与检索

嵌入模型通常用于检索增强生成(RAG)流程中,既作为索引数据的一部分,也用于稍后检索数据。如需更详细的说明,请参阅我们的RAG教程

下面,看看如何使用上面初始化的 embeddings 对象来索引和检索数据。在这个例子中,我们将索引和检索一个示例文档在 InMemoryVectorStore 中。

# Create a vector store with a sample text
from langchain_core.vectorstores import InMemoryVectorStore

text = "LangChain is the framework for building context-aware reasoning applications"

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

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

# Retrieve the most similar text
retrieved_document = retriever.invoke("What is LangChain?")

# show the retrieved document's content
retrieved_document[0].page_content
API 参考:InMemoryVectorStore

直接使用

在内部,向量存储和检索器的实现分别调用 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

嵌入多个文本

您可以嵌入多个文本,使用 embed_documents

text2 = (
"LangGraph is a library for building stateful, multi-actor applications with LLMs"
)
two_vectors = embeddings.embed_documents([text, text2])
for vector in two_vectors:
print(str(vector)[:100]) # Show the first 100 characters of the vector

异步用法

您也可以使用 aembed_queryaembed_documents 来异步生成嵌入:

import asyncio


async def async_example():
single_vector = await embeddings.aembed_query(text)
print(str(single_vector)[:100]) # Show the first 100 characters of the vector


asyncio.run(async_example())

API 参考

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