DatabricksEmbeddings
Databricks Lakehouse Platform 在單一平台上統一了數據、分析和 AI。
本筆記本提供 Databricks 嵌入模型的快速入門概述。 有關所有 DatabricksEmbeddings
功能和配置的詳細文檔,請前往 API 參考。
概觀
整合詳細資訊
類別 | 套件 |
---|---|
DatabricksEmbeddings | databricks-langchain |
支援的方法
DatabricksEmbeddings
支援 Embeddings
類別的所有方法,包括非同步 API。
端點需求
服務端點 DatabricksEmbeddings
封裝必須具有與 OpenAI 相容的嵌入輸入/輸出格式(參考)。 只要輸入格式相容,DatabricksEmbeddings
就可以用於 Databricks 模型服務上託管的任何端點類型。
- 基礎模型 - 精選的先進基礎模型列表,例如 BAAI General Embedding (BGE)。 這些端點已準備好在您的 Databricks 工作區中使用,無需任何設置。
- 自訂模型 - 您還可以透過 MLflow 將自訂嵌入模型部署到服務端點,並選擇您偏好的框架,例如 LangChain、Pytorch、Transformers 等。
- 外部模型 - Databricks 端點可以作為代理服務託管在 Databricks 外部的模型,例如 OpenAI text-embedding-3 等專有模型服務。
設定
要訪問 Databricks 模型,您需要建立 Databricks 帳戶,設置憑證(僅當您在 Databricks 工作區之外時),並安裝所需的套件。
憑證(僅當您在 Databricks 之外時)
如果您在 Databricks 內部執行 LangChain 應用程式,則可以跳過此步驟。
否則,您需要手動將 Databricks 工作區主機名稱和個人存取權杖分別設定為 DATABRICKS_HOST
和 DATABRICKS_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
直接使用
在底層,向量儲存和檢索器實作會呼叫 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_query
和 aembed_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 參考。