> ## Documentation Index
> Fetch the complete documentation index at: https://cndoc-langchain.site/llms.txt
> Use this file to discover all available pages before exploring further.

# LambdaDB

> [LambdaDB](https://lambdadb.ai/) 是一个用于构建可扩展 RAG 和智能体应用程序的无服务器 AI 数据库。

本笔记本涵盖了如何在 LangChain 中开始使用 LambdaDB 向量存储。

## 设置

要访问 LambdaDB 向量存储，您需要创建一个 LambdaDB 账户，获取您的项目凭证，并安装 `langchain-lambdadb` 集成包。

### 凭证

LambdaDB 使用基于项目的身份验证，需要项目 URL 和 API 密钥：

```python theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
import getpass
import os

if "LAMBDADB_PROJECT_URL" not in os.environ:
    os.environ["LAMBDADB_PROJECT_URL"] = getpass.getpass("Enter your LambdaDB project URL: ")

if "LAMBDADB_API_KEY" not in os.environ:
    os.environ["LAMBDADB_API_KEY"] = getpass.getpass("Enter your LambdaDB API key: ")
```

要启用模型调用的自动跟踪，请设置您的 [LangSmith](/langsmith/home) API 密钥：

```python theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
os.environ["LANGSMITH_API_KEY"] = getpass.getpass("Enter your LangSmith API key: ")
os.environ["LANGSMITH_TRACING"] = "true"
```

### 安装

LangChain LambdaDB 集成包含在 `langchain-lambdadb` 包中：

```bash theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
pip install -U langchain-lambdadb
```

您还需要安装一个嵌入模型。例如，要使用 OpenAI 嵌入：

```bash theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
pip install -U langchain-openai
```

***

## 实例化

<Note>
  `LambdaDBVectorStore` 适用于现有集合。您必须事先创建集合，并配置好适当的向量和文本索引。
</Note>

```python theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
from langchain_lambdadb.vectorstores import LambdaDBVectorStore
from langchain_openai import OpenAIEmbeddings
from lambdadb import LambdaDB
import os

# Initialize the LambdaDB client
client = LambdaDB(
    server_url=os.environ["LAMBDADB_SERVER_URL"],
    project_api_key=os.environ["LAMBDADB_API_KEY"]
)

# Initialize embeddings
embeddings = OpenAIEmbeddings()

# Connect to an existing collection
vector_store = LambdaDBVectorStore(
    client=client,
    collection_name="my_collection",  # Must exist beforehand
    embedding=embeddings,
)
```

### 关键参数

* `client`：LambdaDB 客户端实例（必需）
* `collection_name`：LambdaDB 中现有集合的名称（必需）
* `embedding`：要使用的嵌入函数（必需）
* `text_field`：文档中文本字段的名称（默认："text"）
* `vector_field`：文档中向量字段的名称（默认："vector"）
* `validate_collection`：是否验证集合是否存在且处于活动状态（默认：True）
* `default_consistent_read`：默认使用一致性读取以获得即时一致性，或使用最终一致性以获得更好的性能（默认：False）

***

## 管理向量存储

### 添加项目

```python theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
from langchain_core.documents import Document

document_1 = Document(page_content="LambdaDB is a serverless vector database", metadata={"source": "docs"})
document_2 = Document(page_content="It supports fast similarity search", metadata={"source": "docs"})
document_3 = Document(page_content="Perfect for RAG applications", metadata={"category": "features"})

documents = [document_1, document_2, document_3]
ids = vector_store.add_documents(documents=documents, ids=["1", "2", "3"])
print(f"Added documents with IDs: {ids}")
```

<Note>
  文档最大大小为 50KB。集成会自动将文档批处理为最多 100 个一组，以符合 LambdaDB 的 6MB 请求限制。
</Note>

### 删除项目

```python theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
vector_store.delete(ids=["3"])
```

### 通过 ID 获取项目

```python theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
documents = vector_store.get_by_ids(["1", "2"])
for doc in documents:
    print(f"* {doc.page_content} [{doc.metadata}]")
```

***

## 查询向量存储

一旦您的向量存储已创建并添加了相关文档，您很可能希望在运行链或智能体时对其进行查询。

### 相似性搜索

执行简单的相似性搜索：

```python theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
results = vector_store.similarity_search(
    query="What is LambdaDB?",
    k=2
)
for doc in results:
    print(f"* {doc.page_content} [{doc.metadata}]")
```

### 带分数的相似性搜索

如果您想执行相似性搜索并接收相应的分数：

```python theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
results = vector_store.similarity_search_with_score(
    query="vector database features",
    k=2
)
for doc, score in results:
    print(f"* [SIM={score:.3f}] {doc.page_content} [{doc.metadata}]")
```

### 带过滤的相似性搜索

LambdaDB 支持使用查询字符串语法进行过滤：

```python theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
results = vector_store.similarity_search(
    query="database",
    k=2,
    filter={"queryString": {"query": "source:docs"}}
)
for doc in results:
    print(f"* {doc.page_content} [{doc.metadata}]")
```

### 最大边际相关性 (MMR) 搜索

MMR 优化了与查询的相似性以及所选文档之间的多样性：

```python theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
results = vector_store.max_marginal_relevance_search(
    query="LambdaDB features",
    k=2,
    fetch_k=10,  # Fetch 10 candidates
    lambda_mult=0.5,  # Balance between relevance (1.0) and diversity (0.0)
)
for doc in results:
    print(f"* {doc.page_content}")
```

### 转换为检索器

您也可以将向量存储转换为检索器，以便在链中更轻松地使用：

```python theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
retriever = vector_store.as_retriever(
    search_type="mmr",
    search_kwargs={"k": 2, "fetch_k": 10}
)
retriever.invoke("What is LambdaDB?")
```

支持的搜索类型：

* `"similarity"`：标准相似性搜索（默认）
* `"mmr"`：最大边际相关性搜索
* `"similarity_score_threshold"`：带分数阈值的相似性搜索

***

## 异步操作

`LambdaDBVectorStore` 支持所有操作的异步方法：

```python theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
# Add documents
ids = await vector_store.aadd_documents(documents=documents)

# Delete documents
await vector_store.adelete(ids=["3"])

# Search
results = await vector_store.asimilarity_search(query="LambdaDB", k=2)
for doc in results:
    print(f"* {doc.page_content}")

# Search with score
results = await vector_store.asimilarity_search_with_score(query="database", k=2)
for doc, score in results:
    print(f"* [SIM={score:.3f}] {doc.page_content}")
```

<Note>
  目前，异步方法同步运行，因为 LambdaDB 客户端尚不支持异步操作。
</Note>

***

## 一致性控制

LambdaDB 支持两种一致性模式：

* **最终一致性**（默认）：性能更快，但写入后数据可能有最多约 1 分钟的延迟
* **一致性读取**：即时一致性，对性能有轻微影响

```python theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
# Use consistent reads for a specific operation
results = vector_store.similarity_search(
    query="LambdaDB",
    k=2,
    consistent_read=True
)

# Or set consistent reads as the default
vector_store = LambdaDBVectorStore(
    client=client,
    collection_name="my_collection",
    embedding=embeddings,
    default_consistent_read=True  # All reads will be consistent by default
)
```

***

## 从文本创建

您可以一步创建向量存储并用文本填充它：

```python theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
from langchain_lambdadb.vectorstores import LambdaDBVectorStore

texts = [
    "LambdaDB is a serverless vector database",
    "It supports fast similarity search",
    "Perfect for RAG applications"
]

metadatas = [
    {"source": "docs"},
    {"source": "docs"},
    {"category": "features"}
]

vector_store = LambdaDBVectorStore.from_texts(
    texts=texts,
    embedding=embeddings,
    metadatas=metadatas,
    client=client,
    collection_name="my_collection",
    ids=["1", "2", "3"]
)
```

***

## 用于检索增强生成

以下是使用 LambdaDB 进行 RAG 的完整示例：

```python theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
from langchain_lambdadb.vectorstores import LambdaDBVectorStore
from langchain_openai import OpenAIEmbeddings, ChatOpenAI
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.runnables import RunnablePassthrough
from langchain_core.output_parsers import StrOutputParser
from lambdadb import LambdaDB
import os

# Initialize
client = LambdaDB(
    project_url=os.environ["LAMBDADB_PROJECT_URL"],
    project_api_key=os.environ["LAMBDADB_API_KEY"]
)

embeddings = OpenAIEmbeddings()
vector_store = LambdaDBVectorStore(
    client=client,
    collection_name="my_collection",
    embedding=embeddings
)

# Create retriever
retriever = vector_store.as_retriever(search_kwargs={"k": 3})

# Create RAG chain
template = """Answer the question based only on the following context:
{context}

Question: {question}
"""
prompt = ChatPromptTemplate.from_template(template)
model = ChatOpenAI()

chain = (
    {"context": retriever, "question": RunnablePassthrough()}
    | prompt
    | model
    | StrOutputParser()
)

# Use the chain
response = chain.invoke("What is LambdaDB?")
print(response)
```

***

## 关键特性

### 文档大小限制

* 最大文档大小：每个文档 50KB
* 集成会验证文档大小，如果超出则引发错误

### 批处理

* 文档在更新操作中自动批处理为每组 100 个
* 符合 LambdaDB 的 6MB 请求限制

### 过滤

* 支持 LambdaDB 的查询字符串语法进行元数据过滤
* 示例：`filter={"queryString": {"query": "field:value"}}`

### 搜索选项

* **相似性搜索**：查找与查询相似的文档
* **MMR 搜索**：平衡相似性和多样性
* **分数阈值**：按相似性分数过滤结果
* **一致性读取**：控制读取一致性与性能的权衡

***

## API 参考

有关所有 `LambdaDBVectorStore` 功能和配置的详细文档，请访问 [API 参考](https://docs.lambdadb.ai/guides/get-started/quickstart)。

***

## 附加资源

* [LambdaDB 文档](https://docs.lambdadb.ai)

***

<div className="source-links">
  <Callout icon="terminal-2">
    [将这些文档](/use-these-docs)通过 MCP 连接到 Claude、VSCode 等，以获取实时答案。
  </Callout>

  <Callout icon="edit">
    [在 GitHub 上编辑此页面](https://github.com/langchain-ai/docs/edit/main/src/oss/python/integrations/vectorstores/lambdadb.mdx) 或 [提交问题](https://github.com/langchain-ai/docs/issues/new/choose)。
  </Callout>
</div>
