langchain-astradb¶
langchain_astradb ¶
用于 LangChain 的 Astra DB 集成。
此模块提供了几个使用 Astra DB 作为后端的 LangChain 组件。
有关概述,请参阅集成文档页面。
提供的组件
AstraDBVectorStore,一个由 Astra DB 支持的向量存储,具有 Vectorize 支持、混合搜索等功能。AstraDBStore、AstraDBByteStore,分别是用于通用值和二进制 blob 的键值存储组件。AstraDBCache、AstraDBSemanticCache,LLM 响应缓存。AstraDBChatMessageHistory,用于聊天界面的内存。AstraDBLoader,从 Astra DB 集合中加载数据的加载器。
AstraDBCache ¶
Bases: BaseCache
| 方法 | 描述 |
|---|---|
__init__ |
使用 Astra DB 作为后端的缓存,使用一个集合作为键值存储。 |
lookup |
基于 `prompt` 和 `llm_string` 进行查找。 |
alookup |
基于 `prompt` 和 `llm_string` 进行异步查找。 |
更新 |
基于 `prompt` 和 `llm_string` 更新缓存。 |
aupdate |
基于 `prompt` 和 `llm_string` 异步更新缓存。 |
delete_through_llm |
一个围绕 `delete` 的包装器,其中传入了 LLM。 |
adelete_through_llm |
一个围绕 `adelete` 的包装器,其中传入了 LLM。 |
delete |
如果缓存中有条目,则将其驱逐。 |
adelete |
如果缓存中有条目,则将其驱逐。 |
clear |
清除缓存,可以接受额外的关键字参数。 |
aclear |
异步清除缓存,可以接受额外的关键字参数。 |
__init__ ¶
__init__(
*,
collection_name: str = ASTRA_DB_CACHE_DEFAULT_COLLECTION_NAME,
token: str | TokenProvider | None = None,
api_endpoint: str | None = None,
namespace: str | None = None,
environment: str | None = None,
pre_delete_collection: bool = False,
setup_mode: SetupMode = SYNC,
ext_callers: list[tuple[str | None, str | None] | str | None] | None = None,
api_options: APIOptions | None = None,
)
使用 Astra DB 作为后端的缓存,使用一个集合作为键值存储。
查找键,组合在文档的 _id 中,是
- prompt,一个字符串
- llm_string,一个模型参数的确定性字符串表示。(需要防止相同提示但不同模型之间的冲突)
| 参数 | 描述 |
|---|---|
collection_name
|
要创建/使用的 Astra DB 集合的名称。
类型: |
token
|
用于 Astra DB 的 API 令牌,可以是字符串形式,也可以是 `astrapy.authentication.TokenProvider` 的子类。如果未提供,则会检查环境变量 ASTRA_DB_APPLICATION_TOKEN。
类型: |
api_endpoint
|
API 端点的完整 URL,例如 `https://
类型: |
namespace
|
集合创建所在的命名空间(即 keyspace)。如果未提供,则会检查环境变量 ASTRA_DB_KEYSPACE。默认为数据库的“默认命名空间”。
类型: |
environment
|
一个指定目标数据 API 环境的字符串。如果省略,则默认为“prod”(Astra DB 生产环境)。其他值在 `astrapy.constants.Environment` 枚举类中。
类型: |
setup_mode
|
用于创建 Astra DB 集合的模式(SYNC、ASYNC 或 OFF)。
类型: |
pre_delete_collection
|
是否在创建集合之前删除它。如果为 False 且集合已存在,则将按原样使用该集合。
类型: |
ext_callers
|
一个或多个调用者身份,用于在 User-Agent 标头中识别数据 API 调用。这是一个(名称,版本)对的列表,或者如果未提供版本信息,则仅为字符串,如果提供,它将成为与此组件相关的所有 API 请求中 User-Agent 字符串的前导部分。
类型: |
api_options
|
一个 `astrapy.utils.api_options.APIOptions` 的实例,可用于自定义与数据 API 在序列化/反序列化、超时、自定义标头等方面的交互。提供的选项将应用于已为此库量身定制的设置之上,如果指定,将优先。传递 None(默认值)意味着不请求自定义。有关详细信息,请参阅 astrapy 文档。
类型: |
lookup ¶
基于 `prompt` 和 `llm_string` 进行查找。
期望缓存实现从 `prompt` 和 `llm_string` 的 2 元组生成一个键(例如,通过用分隔符连接它们)。
| 参数 | 描述 |
|---|---|
prompt
|
提示的字符串表示。在聊天模型的情况下,提示是对语言模型提示的非平凡序列化。
类型: |
llm_string
|
LLM 配置的字符串表示。 这用于捕获 LLM 的调用参数(例如,模型名称、温度、停止标记、最大标记等)。 这些调用参数被序列化为字符串表示。
类型: |
| 返回 | 描述 |
|---|---|
RETURN_VAL_TYPE | None
|
缓存未命中时,返回 `None`。缓存命中时,返回缓存的值。 |
RETURN_VAL_TYPE | None
|
缓存的值是 `Generation`(或其子类)的列表。 |
alookup async ¶
基于 `prompt` 和 `llm_string` 进行异步查找。
期望缓存实现从 `prompt` 和 `llm_string` 的 2 元组生成一个键(例如,通过用分隔符连接它们)。
| 参数 | 描述 |
|---|---|
prompt
|
提示的字符串表示。在聊天模型的情况下,提示是对语言模型提示的非平凡序列化。
类型: |
llm_string
|
LLM 配置的字符串表示。 这用于捕获 LLM 的调用参数(例如,模型名称、温度、停止标记、最大标记等)。 这些调用参数被序列化为字符串表示。
类型: |
| 返回 | 描述 |
|---|---|
RETURN_VAL_TYPE | None
|
缓存未命中时,返回 `None`。缓存命中时,返回缓存的值。 |
RETURN_VAL_TYPE | None
|
缓存的值是 `Generation`(或其子类)的列表。 |
update ¶
aupdate async ¶
delete_through_llm ¶
一个围绕 `delete` 的包装器,其中传入了 LLM。
如果 llm(prompt) 调用有 `stop` 参数,您应该在这里传递它。
adelete_through_llm async ¶
一个围绕 `adelete` 的包装器,其中传入了 LLM。
如果 llm(prompt) 调用有 `stop` 参数,您应该在这里传递它。
AstraDBSemanticCache ¶
Bases: BaseCache
| 方法 | 描述 |
|---|---|
__init__ |
Astra DB 语义缓存。 |
更新 |
基于 `prompt` 和 `llm_string` 更新缓存。 |
aupdate |
基于 `prompt` 和 `llm_string` 异步更新缓存。 |
lookup |
基于 `prompt` 和 `llm_string` 进行查找。 |
alookup |
基于 `prompt` 和 `llm_string` 进行异步查找。 |
lookup_with_id |
基于 prompt 和 llm_string 进行查找。 |
alookup_with_id |
基于 prompt 和 llm_string 进行查找。 |
lookup_with_id_through_llm |
基于 prompt 和 LLM 进行查找。 |
alookup_with_id_through_llm |
基于 prompt 和 LLM 进行查找。 |
delete_by_document_id |
按文档 ID 删除。 |
adelete_by_document_id |
按文档 ID 删除。 |
clear |
清除缓存,可以接受额外的关键字参数。 |
aclear |
异步清除缓存,可以接受额外的关键字参数。 |
__init__ ¶
__init__(
*,
collection_name: str = ASTRA_DB_SEMANTIC_CACHE_DEFAULT_COLLECTION_NAME,
token: str | TokenProvider | None = None,
api_endpoint: str | None = None,
namespace: str | None = None,
environment: str | None = None,
setup_mode: SetupMode = SYNC,
pre_delete_collection: bool = False,
embedding: Embeddings,
metric: str | None = None,
similarity_threshold: float = ASTRA_DB_SEMANTIC_CACHE_DEFAULT_THRESHOLD,
ext_callers: list[tuple[str | None, str | None] | str | None] | None = None,
api_options: APIOptions | None = None,
)
Astra DB 语义缓存。
该缓存使用 Astra DB 作为向量存储后端,用于语义(即基于相似度)查找。
它使用单个(向量)集合,可以存储来自多个 LLM 的缓存值,因此 LLM 的 'llm_string' 存储在文档元数据中。
您可以选择偏好的相似度(或使用 API 默认值)。默认的分数阈值是针对默认度量调整的。如果切换到其他距离度量,请自行仔细调整。
| 参数 | 描述 |
|---|---|
collection_name
|
要创建/使用的 Astra DB 集合的名称。
类型: |
token
|
用于 Astra DB 的 API 令牌,可以是字符串形式,也可以是 `astrapy.authentication.TokenProvider` 的子类。如果未提供,则会检查环境变量 ASTRA_DB_APPLICATION_TOKEN。
类型: |
api_endpoint
|
API 端点的完整 URL,例如 `https://
类型: |
namespace
|
集合创建所在的命名空间(即 keyspace)。如果未提供,则会检查环境变量 ASTRA_DB_KEYSPACE。默认为数据库的“默认命名空间”。
类型: |
environment
|
一个指定目标数据 API 环境的字符串。如果省略,则默认为“prod”(Astra DB 生产环境)。其他值在 `astrapy.constants.Environment` 枚举类中。
类型: |
setup_mode
|
用于创建 Astra DB 集合的模式(SYNC、ASYNC 或 OFF)。
类型: |
pre_delete_collection
|
是否在创建集合之前删除它。如果为 False 且集合已存在,则将按原样使用该集合。
类型: |
embedding
|
用于语义编码和搜索的嵌入提供程序。
TYPE: |
metric
|
用于评估文本嵌入相似度的函数。默认为 'cosine'(备选:'euclidean'、'dot_product')。
类型: |
similarity_threshold
|
接受(语义搜索)匹配的最低相似度。
类型: |
ext_callers
|
一个或多个调用者身份,用于在 User-Agent 标头中识别数据 API 调用。这是一个(名称,版本)对的列表,或者如果未提供版本信息,则仅为字符串,如果提供,它将成为与此组件相关的所有 API 请求中 User-Agent 字符串的前导部分。
类型: |
api_options
|
一个 `astrapy.utils.api_options.APIOptions` 的实例,可用于自定义与数据 API 在序列化/反序列化、超时、自定义标头等方面的交互。提供的选项将应用于已为此库量身定制的设置之上,如果指定,将优先。传递 None(默认值)意味着不请求自定义。有关详细信息,请参阅 astrapy 文档。
类型: |
update ¶
aupdate async ¶
lookup ¶
基于 `prompt` 和 `llm_string` 进行查找。
期望缓存实现从 `prompt` 和 `llm_string` 的 2 元组生成一个键(例如,通过用分隔符连接它们)。
| 参数 | 描述 |
|---|---|
prompt
|
提示的字符串表示。在聊天模型的情况下,提示是对语言模型提示的非平凡序列化。
类型: |
llm_string
|
LLM 配置的字符串表示。 这用于捕获 LLM 的调用参数(例如,模型名称、温度、停止标记、最大标记等)。 这些调用参数被序列化为字符串表示。
类型: |
| 返回 | 描述 |
|---|---|
RETURN_VAL_TYPE | None
|
缓存未命中时,返回 `None`。缓存命中时,返回缓存的值。 |
RETURN_VAL_TYPE | None
|
缓存的值是 `Generation`(或其子类)的列表。 |
alookup async ¶
基于 `prompt` 和 `llm_string` 进行异步查找。
期望缓存实现从 `prompt` 和 `llm_string` 的 2 元组生成一个键(例如,通过用分隔符连接它们)。
| 参数 | 描述 |
|---|---|
prompt
|
提示的字符串表示。在聊天模型的情况下,提示是对语言模型提示的非平凡序列化。
类型: |
llm_string
|
LLM 配置的字符串表示。 这用于捕获 LLM 的调用参数(例如,模型名称、温度、停止标记、最大标记等)。 这些调用参数被序列化为字符串表示。
类型: |
| 返回 | 描述 |
|---|---|
RETURN_VAL_TYPE | None
|
缓存未命中时,返回 `None`。缓存命中时,返回缓存的值。 |
RETURN_VAL_TYPE | None
|
缓存的值是 `Generation`(或其子类)的列表。 |
lookup_with_id ¶
alookup_with_id async ¶
lookup_with_id_through_llm ¶
alookup_with_id_through_llm async ¶
delete_by_document_id ¶
delete_by_document_id(document_id: str) -> None
按文档 ID 删除。
鉴于这是一个“相似性搜索”缓存,一个合理的失效模式是首先查找以获取 ID,然后使用该 ID 删除。这是第二步。
AstraDBChatMessageHistory ¶
Bases: BaseChatMessageHistory
| 方法 | 描述 |
|---|---|
add_user_message |
将人类消息字符串添加到存储的便捷方法。 |
add_ai_message |
将 `AIMessage` 字符串添加到存储的便捷方法。 |
add_message |
将一个 Message 对象添加到存储中。 |
__str__ |
返回聊天历史的字符串表示形式。 |
__init__ |
将历史记录存储在 Astra DB 中的聊天消息历史记录。 |
aget_messages |
获取消息的异步版本。 |
add_messages |
添加消息列表。 |
aadd_messages |
异步添加消息列表。 |
clear |
从存储中删除所有消息。 |
aclear |
异步从存储中删除所有消息。 |
add_user_message ¶
add_user_message(message: HumanMessage | str) -> None
将人类消息字符串添加到存储的便捷方法。
注意
这是一个便捷方法。代码应优先使用批量 `add_messages` 接口,以节省到持久层的往返次数。
此方法可能会在将来的版本中被弃用。
| 参数 | 描述 |
|---|---|
message
|
要添加到存储中的 `HumanMessage`。
类型: |
add_ai_message ¶
add_message ¶
add_message(message: BaseMessage) -> None
将一个 Message 对象添加到存储中。
| 参数 | 描述 |
|---|---|
message
|
一个要存储的 BaseMessage 对象。
类型: |
| 引发 | 描述 |
|---|---|
NotImplementedError
|
如果子类未实现高效的 `add_messages` 方法。 |
__init__ ¶
__init__(
*,
session_id: str,
collection_name: str = DEFAULT_COLLECTION_NAME,
token: str | TokenProvider | None = None,
api_endpoint: str | None = None,
namespace: str | None = None,
environment: str | None = None,
setup_mode: SetupMode = SYNC,
pre_delete_collection: bool = False,
ext_callers: list[tuple[str | None, str | None] | str | None] | None = None,
api_options: APIOptions | None = None,
) -> None
将历史记录存储在 Astra DB 中的聊天消息历史记录。
| 参数 | 描述 |
|---|---|
session_id
|
用于存储单个聊天会话消息的任意键。
类型: |
collection_name
|
要创建/使用的 Astra DB 集合的名称。
类型: |
token
|
用于 Astra DB 的 API 令牌,可以是字符串形式,也可以是 `astrapy.authentication.TokenProvider` 的子类。如果未提供,则会检查环境变量 ASTRA_DB_APPLICATION_TOKEN。
类型: |
api_endpoint
|
API 端点的完整 URL,例如 `https://
类型: |
namespace
|
集合创建所在的命名空间(即 keyspace)。如果未提供,则会检查环境变量 ASTRA_DB_KEYSPACE。默认为数据库的“默认命名空间”。
类型: |
environment
|
一个指定目标数据 API 环境的字符串。如果省略,则默认为“prod”(Astra DB 生产环境)。其他值在 `astrapy.constants.Environment` 枚举类中。
类型: |
setup_mode
|
用于创建 Astra DB 集合的模式(SYNC、ASYNC 或 OFF)。
类型: |
pre_delete_collection
|
是否在创建集合之前删除它。如果为 False 且集合已存在,则将按原样使用该集合。
类型: |
ext_callers
|
一个或多个调用者身份,用于在 User-Agent 标头中识别数据 API 调用。这是一个(名称,版本)对的列表,或者如果未提供版本信息,则仅为字符串,如果提供,它将成为与此组件相关的所有 API 请求中 User-Agent 字符串的前导部分。
类型: |
api_options
|
一个 `astrapy.utils.api_options.APIOptions` 的实例,可用于自定义与数据 API 在序列化/反序列化、超时、自定义标头等方面的交互。提供的选项将应用于已为此库量身定制的设置之上,如果指定,将优先。传递 None(默认值)意味着不请求自定义。有关详细信息,请参阅 astrapy 文档。
类型: |
aget_messages async ¶
aget_messages() -> list[BaseMessage]
add_messages ¶
add_messages(messages: Sequence[BaseMessage]) -> None
添加消息列表。
实现应重写此方法,以高效方式处理批量添加消息,避免不必要的底层存储往返。
| 参数 | 描述 |
|---|---|
messages
|
要存储的 `BaseMessage` 对象序列。
类型: |
aadd_messages async ¶
aadd_messages(messages: Sequence[BaseMessage]) -> None
异步添加消息列表。
| 参数 | 描述 |
|---|---|
messages
|
要存储的 `BaseMessage` 对象序列。
类型: |
AstraDBLoader ¶
Bases: BaseLoader
| 方法 | 描述 |
|---|---|
load |
将数据加载到 `Document` 对象中。 |
load_and_split |
加载 `Document` 并将其分割成块。块将作为 `Document` 返回。 |
__init__ |
加载 DataStax Astra DB 文档。 |
lazy_load |
`Document` 的惰性加载器。 |
aload |
将数据加载到 `Document` 对象中。 |
alazy_load |
`Document` 的惰性加载器。 |
load_and_split ¶
load_and_split(text_splitter: TextSplitter | None = None) -> list[Document]
加载 `Document` 并将其分割成块。块将作为 `Document` 返回。
危险
不要重写此方法。应将其视为已弃用!
| 参数 | 描述 |
|---|---|
text_splitter
|
用于分割文档的 `TextSplitter` 实例。默认为 `RecursiveCharacterTextSplitter`。
TYPE: |
| 引发 | 描述 |
|---|---|
ImportError
|
如果 `langchain-text-splitters` 未安装且未提供 `text_splitter`。 |
| 返回 | 描述 |
|---|---|
list[Document]
|
`Document` 列表。 |
__init__ ¶
__init__(
collection_name: str,
*,
token: str | TokenProvider | None = None,
api_endpoint: str | None = None,
environment: str | None = None,
namespace: str | None = None,
filter_criteria: dict[str, Any] | None = None,
projection: dict[str, Any] | None = _NOT_SET,
limit: int | None = None,
nb_prefetched: int = _NOT_SET,
page_content_mapper: Callable[[dict], str] = dumps,
metadata_mapper: Callable[[dict], dict[str, Any]] | None = None,
ext_callers: list[tuple[str | None, str | None] | str | None] | None = None,
api_options: APIOptions | None = None,
) -> None
加载 DataStax Astra DB 文档。
| 参数 | 描述 |
|---|---|
collection_name
|
要使用的 Astra DB 集合的名称。
类型: |
token
|
用于 Astra DB 的 API 令牌,可以是字符串形式,也可以是 `astrapy.authentication.TokenProvider` 的子类。如果未提供,则会检查环境变量 ASTRA_DB_APPLICATION_TOKEN。
类型: |
api_endpoint
|
API 端点的完整 URL,例如 `https://
类型: |
environment
|
一个指定目标数据 API 环境的字符串。如果省略,则默认为“prod”(Astra DB 生产环境)。其他值在 `astrapy.constants.Environment` 枚举类中。
类型: |
namespace
|
集合所在的命名空间(即 keyspace)。如果未提供,则检查环境变量 ASTRA_DB_KEYSPACE。默认为数据库的“默认命名空间”。
类型: |
filter_criteria
|
筛选文档的条件。 |
projection
|
指定要返回的字段。如果未提供,读取操作将回退到数据 API 的默认投影。 |
limit
|
读取查询中返回的最大文档数。
TYPE: |
nb_prefetched
|
要预取的最大文档数。*从 v. 0.3.5 开始被忽略:astrapy v1.0+ 不支持此功能。*
类型: |
page_content_mapper
|
应用于集合文档以创建 LangChain 文档的 `page_content` 的函数。默认为 `json.dumps`。 |
metadata_mapper
|
应用于集合文档以创建 LangChain 文档的 `metadata` 的函数。默认返回命名空间、API 端点和集合名称。 |
ext_callers
|
一个或多个调用者身份,用于在 User-Agent 标头中识别数据 API 调用。这是一个(名称,版本)对的列表,或者如果未提供版本信息,则仅为字符串,如果提供,它将成为与此组件相关的所有 API 请求中 User-Agent 字符串的前导部分。
类型: |
api_options
|
一个 `astrapy.utils.api_options.APIOptions` 的实例,可用于自定义与数据 API 在序列化/反序列化、超时、自定义标头等方面的交互。提供的选项将应用于已为此库量身定制的设置之上,如果指定,将优先。传递 None(默认值)意味着不请求自定义。有关详细信息,请参阅 astrapy 文档。
类型: |
alazy_load async ¶
alazy_load() -> AsyncIterator[Document]
`Document` 的惰性加载器。
| YIELDS | 描述 |
|---|---|
AsyncIterator[Document]
|
`Document` 对象。 |
AstraDBByteStore ¶
Bases: AstraDBBaseStore[bytes], ByteStore
| 方法 | 描述 |
|---|---|
mget |
获取与给定键关联的值。 |
amget |
异步获取与给定键相关联的值。 |
mset |
为给定的键设置值。 |
amset |
异步为给定的键设置值。 |
mdelete |
删除给定的键及其关联的值。 |
amdelete |
异步删除给定的键及其关联的值。 |
yield_keys |
获取一个匹配给定前缀的键的迭代器。 |
ayield_keys |
异步获取与给定前缀匹配的键的迭代器。 |
__init__ |
使用 DataStax AstraDB 作为底层存储的 ByteStore 实现。 |
decode_value |
从 Astra DB 解码值。 |
encode_value |
为 Astra DB 编码值。 |
mget ¶
amget async ¶
mset ¶
amset async ¶
yield_keys ¶
ayield_keys async ¶
ayield_keys(*, prefix: str | None = None) -> AsyncIterator[str]
异步获取与给定前缀匹配的键的迭代器。
| 参数 | 描述 |
|---|---|
prefix
|
要匹配的前缀。
类型: |
| YIELDS | 描述 |
|---|---|
AsyncIterator[K] | AsyncIterator[str]
|
匹配给定前缀的键。 |
AsyncIterator[K] | AsyncIterator[str]
|
此方法允许返回一个 K 或 str 的迭代器 |
AsyncIterator[K] | AsyncIterator[str]
|
取决于哪种方式对给定的存储更有意义。 |
__init__ ¶
__init__(
*,
collection_name: str,
token: str | TokenProvider | None = None,
api_endpoint: str | None = None,
namespace: str | None = None,
environment: str | None = None,
pre_delete_collection: bool = False,
setup_mode: SetupMode = SYNC,
ext_callers: list[tuple[str | None, str | None] | str | None] | None = None,
api_options: APIOptions | None = None,
) -> None
使用 DataStax AstraDB 作为底层存储的 ByteStore 实现。
字节值被转换为 base64 编码的字符串。
AstraDB 集合中的文档将具有以下格式
| 参数 | 描述 |
|---|---|
collection_name
|
要创建/使用的 Astra DB 集合的名称。
类型: |
token
|
用于 Astra DB 的 API 令牌,可以是字符串形式,也可以是 `astrapy.authentication.TokenProvider` 的子类。如果未提供,则会检查环境变量 ASTRA_DB_APPLICATION_TOKEN。
类型: |
api_endpoint
|
API 端点的完整 URL,例如 `https://
类型: |
namespace
|
集合创建所在的命名空间(即 keyspace)。如果未提供,则会检查环境变量 ASTRA_DB_KEYSPACE。默认为数据库的“默认命名空间”。
类型: |
environment
|
一个指定目标数据 API 环境的字符串。如果省略,则默认为“prod”(Astra DB 生产环境)。其他值在 `astrapy.constants.Environment` 枚举类中。
类型: |
setup_mode
|
用于创建 Astra DB 集合的模式(SYNC、ASYNC 或 OFF)。
类型: |
pre_delete_collection
|
是否在创建集合之前删除它。如果为 False 且集合已存在,则将按原样使用该集合。
类型: |
ext_callers
|
一个或多个调用者身份,用于在 User-Agent 标头中识别数据 API 调用。这是一个(名称,版本)对的列表,或者如果未提供版本信息,则仅为字符串,如果提供,它将成为与此组件相关的所有 API 请求中 User-Agent 字符串的前导部分。
类型: |
api_options
|
一个 `astrapy.utils.api_options.APIOptions` 的实例,可用于自定义与数据 API 在序列化/反序列化、超时、自定义标头等方面的交互。提供的选项将应用于已为此库量身定制的设置之上,如果指定,将优先。传递 None(默认值)意味着不请求自定义。有关详细信息,请参阅 astrapy 文档。
类型: |
AstraDBStore ¶
Bases: AstraDBBaseStore[Any]
| 方法 | 描述 |
|---|---|
mget |
获取与给定键关联的值。 |
amget |
异步获取与给定键相关联的值。 |
mset |
为给定的键设置值。 |
amset |
异步为给定的键设置值。 |
mdelete |
删除给定的键及其关联的值。 |
amdelete |
异步删除给定的键及其关联的值。 |
yield_keys |
获取一个匹配给定前缀的键的迭代器。 |
ayield_keys |
异步获取与给定前缀匹配的键的迭代器。 |
__init__ |
使用 DataStax AstraDB 作为底层存储的 BaseStore 实现。 |
decode_value |
从 Astra DB 解码值。 |
encode_value |
为 Astra DB 编码值。 |
mget ¶
amget async ¶
mset ¶
amset async ¶
yield_keys ¶
ayield_keys async ¶
ayield_keys(*, prefix: str | None = None) -> AsyncIterator[str]
异步获取与给定前缀匹配的键的迭代器。
| 参数 | 描述 |
|---|---|
prefix
|
要匹配的前缀。
类型: |
| YIELDS | 描述 |
|---|---|
AsyncIterator[K] | AsyncIterator[str]
|
匹配给定前缀的键。 |
AsyncIterator[K] | AsyncIterator[str]
|
此方法允许返回一个 K 或 str 的迭代器 |
AsyncIterator[K] | AsyncIterator[str]
|
取决于哪种方式对给定的存储更有意义。 |
__init__ ¶
__init__(
collection_name: str,
*,
token: str | TokenProvider | None = None,
api_endpoint: str | None = None,
namespace: str | None = None,
environment: str | None = None,
pre_delete_collection: bool = False,
setup_mode: SetupMode = SYNC,
ext_callers: list[tuple[str | None, str | None] | str | None] | None = None,
api_options: APIOptions | None = None,
) -> None
使用 DataStax AstraDB 作为底层存储的 BaseStore 实现。
值类型可以是任何可由 json.dumps 序列化的类型。可用于通过 CacheBackedEmbeddings 存储嵌入。
AstraDB 集合中的文档将具有以下格式
| 参数 | 描述 |
|---|---|
collection_name
|
要创建/使用的 Astra DB 集合的名称。
类型: |
token
|
用于 Astra DB 的 API 令牌,可以是字符串形式,也可以是 `astrapy.authentication.TokenProvider` 的子类。如果未提供,则会检查环境变量 ASTRA_DB_APPLICATION_TOKEN。
类型: |
api_endpoint
|
API 端点的完整 URL,例如 `https://
类型: |
namespace
|
集合创建所在的命名空间(即 keyspace)。如果未提供,则会检查环境变量 ASTRA_DB_KEYSPACE。默认为数据库的“默认命名空间”。
类型: |
environment
|
一个指定目标数据 API 环境的字符串。如果省略,则默认为“prod”(Astra DB 生产环境)。其他值在 `astrapy.constants.Environment` 枚举类中。
类型: |
setup_mode
|
用于创建 Astra DB 集合的模式(SYNC、ASYNC 或 OFF)。
类型: |
pre_delete_collection
|
是否在创建集合之前删除它。如果为 False 且集合已存在,则将按原样使用该集合。
类型: |
ext_callers
|
一个或多个调用者身份,用于在 User-Agent 标头中识别数据 API 调用。这是一个(名称,版本)对的列表,或者如果未提供版本信息,则仅为字符串,如果提供,它将成为与此组件相关的所有 API 请求中 User-Agent 字符串的前导部分。
类型: |
api_options
|
一个 `astrapy.utils.api_options.APIOptions` 的实例,可用于自定义与数据 API 在序列化/反序列化、超时、自定义标头等方面的交互。提供的选项将应用于已为此库量身定制的设置之上,如果指定,将优先。传递 None(默认值)意味着不请求自定义。有关详细信息,请参阅 astrapy 文档。
类型: |
AstraDBVectorStore ¶
Bases: VectorStore
一个使用 DataStax Astra DB 作为后端的向量存储。
设置
安装 `langchain-astradb` 包并访问 AstraDB 网站,创建一个账户,创建一个新数据库并创建一个应用程序令牌。
实例化
从数据库的仪表板获取您的 API 端点和应用程序令牌。
创建一个向量存储并提供一个 LangChain 嵌入对象以供使用。
import getpass
from langchain_astradb import AstraDBVectorStore
from langchain_openai import OpenAIEmbeddings
ASTRA_DB_API_ENDPOINT = getpass.getpass("ASTRA_DB_API_ENDPOINT = ")
ASTRA_DB_APPLICATION_TOKEN = getpass.getpass("ASTRA_DB_APPLICATION_TOKEN = ")
vector_store = AstraDBVectorStore(
collection_name="astra_vector_langchain",
embedding=OpenAIEmbeddings(),
api_endpoint=ASTRA_DB_API_ENDPOINT,
token=ASTRA_DB_APPLICATION_TOKEN,
)
(Vectorize)创建一个向量存储,其中嵌入向量计算完全在服务器端进行,使用 vectorize 功能。
import getpass
from astrapy.info import VectorServiceOptions
from langchain_astradb import AstraDBVectorStore
ASTRA_DB_API_ENDPOINT = getpass.getpass("ASTRA_DB_API_ENDPOINT = ")
ASTRA_DB_APPLICATION_TOKEN = getpass.getpass("ASTRA_DB_APPLICATION_TOKEN = ")
vector_store = AstraDBVectorStore(
collection_name="astra_vectorize_langchain",
api_endpoint=ASTRA_DB_API_ENDPOINT,
token=ASTRA_DB_APPLICATION_TOKEN,
collection_vector_service_options=VectorServiceOptions(
provider="nvidia",
model_name="NV-Embed-QA",
# authentication=..., # needed by some providers/models
),
)
(混合)底层的 Astra DB 通常支持混合搜索(即词法 + 向量 ANN)以提高结果的准确性。当可用时,会自动配置和使用。要手动控制,请使用 `collection_rerank` 和 `collection_lexical` 构造函数参数。
import getpass
from astrapy.info import (
CollectionLexicalOptions,
CollectionRerankOptions,
RerankServiceOptions,
VectorServiceOptions,
)
from langchain_astradb import AstraDBVectorStore
ASTRA_DB_API_ENDPOINT = getpass.getpass("ASTRA_DB_API_ENDPOINT = ")
ASTRA_DB_APPLICATION_TOKEN = getpass.getpass("ASTRA_DB_APPLICATION_TOKEN = ")
vector_store = AstraDBVectorStore(
collection_name="astra_vectorize_langchain",
# embedding=..., # needed unless using 'vectorize'
api_endpoint=ASTRA_DB_API_ENDPOINT,
token=ASTRA_DB_APPLICATION_TOKEN,
collection_vector_service_options=VectorServiceOptions(...), # see above
collection_lexical=CollectionLexicalOptions(analyzer="standard"),
collection_rerank=CollectionRerankOptions(
service=RerankServiceOptions(
provider="nvidia",
model_name="nvidia/llama-3.2-nv-rerankqa-1b-v2",
),
),
collection_reranking_api_key=..., # if needed by the model/setup
)
与混合相关的服务器升级可能会导致存储默认值与预先存在的集合之间出现不匹配:如果报告了此类不匹配(作为数据 API“EXISTING_COLLECTION_DIFFERENT_SETTINGS”错误),解决方法有:(1) 使用自动检测模式,(2) 切换到 `setup_mode` "OFF",或 (3) 在向量存储构造函数中明确指定词法和/或重排设置,以匹配现有集合配置。更多详情请参见此处。
(自动检测)让向量存储通过检查现有集合来确定配置(包括 vectorize 和数据库上的文档编码方案)。
import getpass
from langchain_astradb import AstraDBVectorStore
ASTRA_DB_API_ENDPOINT = getpass.getpass("ASTRA_DB_API_ENDPOINT = ")
ASTRA_DB_APPLICATION_TOKEN = getpass.getpass("ASTRA_DB_APPLICATION_TOKEN = ")
vector_store = AstraDBVectorStore(
collection_name="astra_existing_collection",
# embedding=..., # needed unless using 'vectorize'
api_endpoint=ASTRA_DB_API_ENDPOINT,
token=ASTRA_DB_APPLICATION_TOKEN,
autodetect_collection=True,
)
(非 Astra DB)此类也可以通过数据 API 针对非 Astra DB 数据库,例如自部署的 HCD。
import getpass
from astrapy.authentication import UsernamePasswordTokenProvider
from langchain_astradb import AstraDBVectorStore
vector_store = AstraDBVectorStore(
collection_name="astra_existing_collection",
# embedding=..., # needed unless using 'vectorize'
api_endpoint="https://:8181",
token=UsernamePasswordTokenProvider(
username="user",
password="pwd",
),
collection_vector_service_options=..., # if 'vectorize'
)
添加文档
向向量存储中添加一个或多个文档。ID 是可选的:如果提供,并且匹配现有文档,则会执行覆盖操作。
from langchain_core.documents import Document
document_1 = Document(page_content="foo", metadata={"baz": "bar"})
document_2 = Document(page_content="thud", metadata={"bar": "baz"})
document_3 = Document(page_content="i will be deleted :(")
documents = [document_1, document_2, document_3]
ids = ["1", "2", "3"]
vector_store.add_documents(documents=documents, ids=ids)
搜索
使用提供的查询字符串运行相似性搜索。
带筛选的搜索
为搜索指定元数据过滤器。过滤器的简单 `key: value` 语法表示相等(并隐含“和”)。还有更复杂的语法可用,遵循数据 API 规范,请参见(文档)[https://docs.datastax.com/en/astra-db-serverless/api-reference/filter-operator-collections.html]。
带分数的搜索
搜索结果会连同其相似度分数一起返回。
异步
所有方法都带有其异步对应版本(方法名前缀为 `a`)。
# add documents
await vector_store.aadd_documents(documents=documents, ids=ids)
# delete documents
await vector_store.adelete(ids=["3"])
# search
results = vector_store.asimilarity_search(query="thud", k=1)
# search with score
results = await vector_store.asimilarity_search_with_score(query="qux", k=1)
for doc, score in results:
print(f"* [SIM={score:3f}] {doc.page_content} [{doc.metadata}]")
用作检索器
可以从向量存储中生成一个 Retriever 以供进一步使用。
| 方法 | 描述 |
|---|---|
add_documents |
在 `VectorStore` 中添加或更新文档。 |
aadd_documents |
异步运行更多文档通过嵌入并添加到 `VectorStore`。 |
search |
使用指定的搜索类型返回与查询最相似的文档。 |
asearch |
异步返回与查询最相似的文档,使用指定的搜索类型。 |
similarity_search_with_relevance_scores |
返回文档和在 `[0, 1]` 范围内的相关性分数。 |
asimilarity_search_with_relevance_scores |
异步返回文档和在 `[0, 1]` 范围内的相关性分数。 |
as_retriever |
返回从此 `VectorStore` 初始化的 `VectorStoreRetriever`。 |
filter_to_query |
基于元数据过滤器准备一个用于数据库的查询。 |
__init__ |
一个使用 DataStax Astra DB 作为后端的向量存储。 |
copy |
创建一个副本,可能会更改属性。 |
clear |
清空集合中的所有存储条目。 |
aclear |
清空集合中的所有存储条目。 |
delete_by_document_id |
给定文档 ID,从存储中删除单个文档。 |
adelete_by_document_id |
给定文档 ID,从存储中删除单个文档。 |
delete |
按向量 ID 删除。 |
adelete |
按向量 ID 删除。 |
delete_by_metadata_filter |
删除所有匹配特定元数据过滤条件的文档。 |
adelete_by_metadata_filter |
删除所有匹配特定元数据过滤条件的文档。 |
delete_collection |
从数据库中完全删除该集合。 |
adelete_collection |
从数据库中完全删除该集合。 |
add_texts |
通过嵌入运行文本并将它们添加到向量存储中。 |
aadd_texts |
通过嵌入运行文本并将它们添加到向量存储中。 |
update_metadata |
添加/覆盖现有文档的元数据。 |
aupdate_metadata |
添加/覆盖现有文档的元数据。 |
full_decode_astra_db_found_document |
完全解码一个 Astra DB 文档,即解码为 Document+embedding/similarity。 |
full_decode_astra_db_reranked_result |
完全解码一个 Astra DB 查找并重排的命中结果(Document+embedding/similarity)。 |
run_query_raw |
在存储的文档上执行通用查询,返回 Astra DB 文档。 |
run_query |
在存储的文档上执行通用查询,返回 Documents+其他信息。 |
arun_query_raw |
在存储的文档上执行通用查询,返回 Astra DB 文档。 |
arun_query |
在存储的文档上执行通用查询,返回 Documents+其他信息。 |
metadata_search |
通过元数据搜索获取文档。 |
ametadata_search |
通过元数据搜索获取文档。 |
get_by_document_id |
给定文档 ID,从存储中检索单个文档。 |
aget_by_document_id |
给定文档 ID,从存储中检索单个文档。 |
get_by_ids |
根据 ID 获取文档。 |
get_by_document_ids |
根据 ID 获取文档。 |
aget_by_ids |
根据 ID 获取文档。 |
aget_by_document_ids |
根据 ID 获取文档。 |
similarity_search |
返回与查询最相似的文档。 |
similarity_search_with_score |
返回与查询最相似且带有分数的文档。 |
similarity_search_with_score_id |
返回与查询最相似且带有分数和 ID 的文档。 |
similarity_search_by_vector |
返回与嵌入向量最相似的文档。 |
similarity_search_with_score_by_vector |
返回与嵌入向量最相似且带有分数的文档。 |
similarity_search_with_score_id_by_vector |
返回与嵌入向量最相似且带有分数和 ID 的文档。 |
asimilarity_search |
返回与查询最相似的文档。 |
asimilarity_search_with_score |
返回与查询最相似且带有分数的文档。 |
asimilarity_search_with_score_id |
返回与查询最相似且带有分数和 ID 的文档。 |
asimilarity_search_by_vector |
返回与嵌入向量最相似的文档。 |
asimilarity_search_with_score_by_vector |
返回与嵌入向量最相似且带有分数的文档。 |
asimilarity_search_with_score_id_by_vector |
返回与嵌入向量最相似且带有分数和 ID 的文档。 |
similarity_search_with_embedding_by_vector |
返回与嵌入向量最相似且带有嵌入的文档。 |
asimilarity_search_with_embedding_by_vector |
返回与嵌入向量最相似且带有嵌入的文档。 |
similarity_search_with_embedding |
返回与查询最相似且带有嵌入的文档。 |
asimilarity_search_with_embedding |
返回与查询最相似且带有嵌入的文档。 |
max_marginal_relevance_search_by_vector |
返回使用最大边际相关性选择的文档。 |
amax_marginal_relevance_search_by_vector |
返回使用最大边际相关性选择的文档。 |
max_marginal_relevance_search |
返回使用最大边际相关性选择的文档。 |
amax_marginal_relevance_search |
返回使用最大边际相关性选择的文档。 |
from_texts |
从原始文本创建 Astra DB 向量存储。 |
afrom_texts |
从原始文本创建 Astra DB 向量存储。 |
from_documents |
从文档列表创建 Astra DB 向量存储。 |
afrom_documents |
从文档列表创建 Astra DB 向量存储。 |
add_documents ¶
aadd_documents async ¶
search ¶
使用指定的搜索类型返回与查询最相似的文档。
| 参数 | 描述 |
|---|---|
query
|
输入文本。
类型: |
search_type
|
要执行的搜索类型。可以是 `'similarity'`、`'mmr'` 或 `'similarity_score_threshold'`。
类型: |
**kwargs
|
传递给搜索方法的参数。
类型: |
| 返回 | 描述 |
|---|---|
list[Document]
|
与查询最相似的 `Document` 对象列表。 |
| 引发 | 描述 |
|---|---|
ValueError
|
如果 `search_type` 不是 `'similarity'`、`'mmr'` 或 `'similarity_score_threshold'` 之一。 |
asearch async ¶
异步返回与查询最相似的文档,使用指定的搜索类型。
| 参数 | 描述 |
|---|---|
query
|
输入文本。
类型: |
search_type
|
要执行的搜索类型。可以是 `'similarity'`、`'mmr'` 或 `'similarity_score_threshold'`。
类型: |
**kwargs
|
传递给搜索方法的参数。
类型: |
| 返回 | 描述 |
|---|---|
list[Document]
|
与查询最相似的 `Document` 对象列表。 |
| 引发 | 描述 |
|---|---|
ValueError
|
如果 `search_type` 不是 `'similarity'`、`'mmr'` 或 `'similarity_score_threshold'` 之一。 |
similarity_search_with_relevance_scores ¶
asimilarity_search_with_relevance_scores async ¶
as_retriever ¶
as_retriever(**kwargs: Any) -> VectorStoreRetriever
返回从此 `VectorStore` 初始化的 `VectorStoreRetriever`。
| 参数 | 描述 |
|---|---|
**kwargs
|
传递给搜索函数的关键字参数。可以包括
类型: |
| 返回 | 描述 |
|---|---|
VectorStoreRetriever
|
`VectorStore` 的检索器类。 |
示例
# Retrieve more documents with higher diversity
# Useful if your dataset has many similar documents
docsearch.as_retriever(
search_type="mmr", search_kwargs={"k": 6, "lambda_mult": 0.25}
)
# Fetch more documents for the MMR algorithm to consider
# But only return the top 5
docsearch.as_retriever(search_type="mmr", search_kwargs={"k": 5, "fetch_k": 50})
# Only retrieve documents that have a relevance score
# Above a certain threshold
docsearch.as_retriever(
search_type="similarity_score_threshold",
search_kwargs={"score_threshold": 0.8},
)
# Only get the single most similar document from the dataset
docsearch.as_retriever(search_kwargs={"k": 1})
# Use a filter to only retrieve documents from a specific paper
docsearch.as_retriever(
search_kwargs={"filter": {"paper_title": "GPT-4 Technical Report"}}
)
filter_to_query ¶
__init__ ¶
__init__(
*,
collection_name: str,
embedding: Embeddings | None = None,
token: str | TokenProvider | None = None,
api_endpoint: str | None = None,
environment: str | None = None,
namespace: str | None = None,
metric: str | None = None,
batch_size: int | None = None,
bulk_insert_batch_concurrency: int | None = None,
bulk_insert_overwrite_concurrency: int | None = None,
bulk_delete_concurrency: int | None = None,
setup_mode: SetupMode | None = None,
pre_delete_collection: bool = False,
metadata_indexing_include: Iterable[str] | None = None,
metadata_indexing_exclude: Iterable[str] | None = None,
collection_indexing_policy: dict[str, Any] | None = None,
collection_vector_service_options: VectorServiceOptions | None = None,
collection_embedding_api_key: str | EmbeddingHeadersProvider | None = None,
content_field: str | None = None,
ignore_invalid_documents: bool = False,
autodetect_collection: bool = False,
ext_callers: list[tuple[str | None, str | None] | str | None] | None = None,
component_name: str = COMPONENT_NAME_VECTORSTORE,
api_options: APIOptions | None = None,
collection_rerank: CollectionRerankOptions | RerankServiceOptions | None = None,
collection_reranking_api_key: str | RerankingHeadersProvider | None = None,
collection_lexical: str | dict[str, Any] | CollectionLexicalOptions | None = None,
hybrid_search: HybridSearchMode | None = None,
hybrid_limit_factor: float
| dict[str, float]
| HybridLimitFactorPrescription
| None = None,
) -> None
一个使用 DataStax Astra DB 作为后端的向量存储。
有关 Astra DB 的更多信息,请访问 https://docs.datastax.com/en/astra-db-serverless/index.html
| 参数 | 描述 |
|---|---|
embedding
|
要使用的嵌入函数或服务。这启用了客户端嵌入函数或对外部嵌入提供商的调用。如果传递了 `embedding`,则不能提供 `collection_vector_service_options`。
TYPE: |
collection_name
|
要创建/使用的 Astra DB 集合的名称。
类型: |
token
|
用于 Astra DB 的 API 令牌,可以是字符串形式,也可以是 `astrapy.authentication.TokenProvider` 的子类。如果未提供,则会检查环境变量 ASTRA_DB_APPLICATION_TOKEN。
类型: |
api_endpoint
|
API 端点的完整 URL,例如 `https://
类型: |
environment
|
一个指定目标数据 API 环境的字符串。如果省略,则默认为“prod”(Astra DB 生产环境)。其他值在 `astrapy.constants.Environment` 枚举类中。
类型: |
namespace
|
集合创建所在的命名空间(即 keyspace)。如果未提供,则会检查环境变量 ASTRA_DB_KEYSPACE。默认为数据库的“默认命名空间”。
类型: |
metric
|
在 Astra DB 中可用的相似性函数。如果省略,将使用 Astra DB API 的默认值(即“cosine”——但出于性能原因,如果嵌入被归一化为 1,建议使用“dot_product”)。
类型: |
batch_size
|
每个单独插入 API 请求的文档块大小。如果未提供,则应用 astrapy 的默认值。
TYPE: |
bulk_insert_batch_concurrency
|
并发插入批次的线程或协程数。
TYPE: |
bulk_insert_overwrite_concurrency
|
批次中插入已存在条目的线程或协程数。
TYPE: |
bulk_delete_concurrency
|
用于多条目删除的线程或协程数。
TYPE: |
setup_mode
|
用于创建集合的模式(SYNC、ASYNC 或 OFF)。
类型: |
pre_delete_collection
|
是否在创建集合之前删除它。如果为 False 且集合已存在,则将按原样使用该集合。
类型: |
metadata_indexing_include
|
应为以后在搜索中进行筛选而建立索引的特定元数据子字段的允许列表。 |
metadata_indexing_exclude
|
不应为以后在搜索中进行筛选而建立索引的特定元数据子字段的拒绝列表。 |
collection_indexing_policy
|
一个完整的“索引”规范,用于指定哪些字段应为以后在搜索中进行筛选而建立索引。此字典必须符合 API 规范(请参阅 https://docs.datastax.com/en/astra-db-serverless/api-reference/collection-indexes.html) |
collection_vector_service_options
|
指定在 Astra DB 中使用服务器端嵌入。如果传递此参数,则不能提供 `embedding`。
类型: |
collection_embedding_api_key
|
用于在 Astra DB 中使用服务器端嵌入。通过此参数,可以提供一个 API 密钥,该密钥将与每个数据请求一起传递给 Astra DB。此参数可以是字符串或 `astrapy.authentication.EmbeddingHeadersProvider` 的子类。这在为集合配置了服务,但 Astra 的密钥管理系统中未存储相应密钥时很有用。
类型: |
content_field
|
在 Astra DB 上保存时,文档中包含文本内容的字段名称。对于 vectorize 集合,不能指定此字段;对于非 vectorize 集合,默认为 "content"。特殊值 "*" 只能在 autodetect_collection=True 时传递。在这种情况下,文本内容的键的实际名称是通过检查集合中的几个文档来猜测的,假设较长的字符串是最可能的候选者。在使用 `"*"` 作为此参数之前,请了解此方法的局限性并对您的数据有所了解。
类型: |
ignore_invalid_documents
|
如果为 False(默认值),当在 Astra DB 集合中发现不符合预期形状的文档时会引发异常。如果设置为 True,则会忽略来自数据库的此类结果并发出警告。请注意,在这种情况下,相似性搜索最终可能会返回少于所需 `k` 个的结果。
类型: |
autodetect_collection
|
如果为 True,则开启自动检测行为。存储将查找具有所提供名称的现有集合,并从中推断存储设置。默认为 False。在自动检测模式下,`content_field` 可以指定为 `"*"`,这意味着将尝试通过检查来确定它(除非启用了 vectorize,在这种情况下 `content_field` 被忽略)。在自动检测模式下,存储不仅确定嵌入是客户端还是服务器端,而且——最重要的是——自动在数据库上文档的“嵌套”和“扁平”表示之间切换(即将元数据键值对分组在 `metadata` 字段中或在文档的顶层展开)。前一种方案是 AstraDBVectorStore 的本机模式;在将 AstraDBVectorStore 应用于它们之前,如果向量集合是通过外部方式(例如第三方数据导入工具)填充的,则存储会采用后一种方案。请注意,如果此参数为 True,则不能使用以下参数:`metric`、`setup_mode`、`metadata_indexing_include`、`metadata_indexing_exclude`、`collection_indexing_policy`、`collection_vector_service_options`。
类型: |
ext_callers
|
一个或多个调用者身份,用于在 User-Agent 标头中识别数据 API 调用。这是一个(名称,版本)对的列表,或者如果未提供版本信息,则仅为字符串,如果提供,它将成为与此组件相关的所有 API 请求中 User-Agent 字符串的前导部分。
类型: |
component_name
|
在作为 User-Agent 字符串传递给数据 API 的使用信息堆栈中标识此特定组件的字符串。默认为 "langchain_vectorstore",但如果此组件实际上用作另一个组件的构建块(例如,当向量存储在 `GraphRetriever` 中使用时),则可以覆盖它。
类型: |
api_options
|
一个 `astrapy.utils.api_options.APIOptions` 的实例,可用于自定义与数据 API 在序列化/反序列化、超时、自定义标头等方面的交互。提供的选项将应用于已为此库量身定制的设置之上,如果指定,将优先。传递 None(默认值)意味着不请求自定义。有关详细信息,请参阅 astrapy 文档。
类型: |
collection_rerank
|
提供重排设置是运行混合相似性搜索所必需的。此参数可以是 astrapy 类 `CollectionRerankOptions` 或 `RerankServiceOptions` 的实例。
类型: |
collection_reranking_api_key
|
用于在 Astra DB 中使用服务器端重排服务。通过此参数,可以提供一个 API 密钥,该密钥将与每个数据请求一起传递给 Astra DB。此参数可以是字符串或 `astrapy.authentication.RerankingHeadersProvider` 的子类。这在为集合配置了服务,但 Astra 的密钥管理系统中未存储相应密钥时很有用。
类型: |
collection_lexical
|
配置词法分析器是运行词法和混合搜索所必需的。此参数可以是字符串或字典,然后将其原样传递给 createCollection 的 `"$lexical.analyzer"` 值,或者是一个现成的 astrapy `CollectionLexicalOptions` 对象。
类型: |
hybrid_search
|
相似性搜索是否应作为混合搜索运行。值为 DEFAULT、ON 或 OFF。在 DEFAULT 的情况下,搜索将根据集合配置的允许情况执行,并优先使用混合搜索。将此设置强制为 ON 的非混合启用集合将在运行搜索时导致服务器错误。
类型: |
hybrid_limit_factor
|
混合搜索的子搜索“limit”规范。如果省略,混合搜索不指定它,并让数据 API 使用其默认值。如果提供一个正浮点数:参与混合搜索的每个子搜索(即基于向量的 ANN 和基于词法的)将被要求获取最多 `int(k*hybrid_limit_factor)` 个项目,其中 `k` 是整个搜索的期望结果计数。如果提供一个 `HybridLimitFactorPrescription`(有关详细信息,请参见类文档字符串),则将对向量和词法子搜索应用不同的因子。或者,一个带有键 `"$lexical"` 和 `"$vector"` 的简单字典可以达到相同的效果。
类型: |
| 引发 | 描述 |
|---|---|
ValueError
|
如果参数不一致或无效。 |
注意
对于同步 add_texts 中的并发性,根据经验法则,在典型的客户端计算机上,建议将 bulk_insert_batch_concurrency * bulk_insert_overwrite_concurrency 的数量远低于 1000,以避免耗尽客户端多线程/网络资源。硬编码的默认值有些保守,以满足大多数计算机的规格,但可以测试的一个明智选择是
- bulk_insert_batch_concurrency = 80
- bulk_insert_overwrite_concurrency = 10
需要进行一些实验才能获得最佳结果,这取决于计算机/网络规格和预期的工作负载(特别是,写入是更新现有 ID 的频率)。请记住,您也可以将并发设置传递给对 add_texts 和 add_documents" href="#langchain_astradb.AstraDBVectorStore.add_documents">add_documents 的单个调用。
copy ¶
copy(
*,
token: str | TokenProvider | None = None,
ext_callers: list[tuple[str | None, str | None] | str | None] | None = None,
component_name: str | None = None,
collection_embedding_api_key: str | EmbeddingHeadersProvider | None = None,
collection_reranking_api_key: str | RerankingHeadersProvider | None = None,
) -> AstraDBVectorStore
创建一个副本,可能会更改属性。
此方法创建此环境的浅拷贝。如果传递的参数不同于 None,它将替换拷贝中的相应值。
该方法只允许更改确保拷贝功能正常且不触发副作用的参数:例如,不能创建作用于新集合的拷贝。在这些情况下,应从头开始创建一个新的 `AstraDBVectorStore` 实例。
| 参数 | 描述 |
|---|---|
token
|
用于 Astra DB 的 API 令牌,可以是字符串形式或 `astrapy.authentication.TokenProvider` 的子类。为了在拷贝中取消令牌使用,请显式传递 `astrapy.authentication.StaticTokenProvider(None)`。
类型: |
ext_callers
|
在发出数据 API 请求时附加到 User-Agent 标头的附加自定义(caller_name, caller_version)对。
类型: |
component_name
|
在识别数据 API 请求的发起者时要使用的 LangChain 组件名称的值。
类型: |
collection_embedding_api_key
|
如有必要,在每个数据 API 请求中提供的 API 密钥。如果使用 Vectorize 功能且数据库中未存储密钥,则这是必需的。为了在拷贝中取消 API 密钥,请显式传递 `astrapy.authentication.EmbeddingAPIKeyHeaderProvider(None)`。
类型: |
collection_reranking_api_key
|
用于在 Astra DB 中使用服务器端重排服务。通过此参数,可以提供一个 API 密钥,该密钥将与每个数据请求一起传递给 Astra DB。此参数可以是字符串或 `astrapy.authentication.RerankingHeadersProvider` 的子类。这在为集合配置了服务,但 Astra 的密钥管理系统中未存储相应密钥时很有用。
类型: |
| 返回 | 描述 |
|---|---|
AstraDBVectorStore
|
此向量存储的浅拷贝,可能具有一些更改的 |
AstraDBVectorStore
|
属性。 |
delete_by_document_id ¶
adelete_by_document_id async ¶
delete ¶
adelete async ¶
delete_by_metadata_filter ¶
删除所有匹配特定元数据过滤条件的文档。
此操作不以任何方式使用向量嵌入,它仅移除元数据匹配所提供条件的全部文档。
| 参数 | 描述 |
|---|---|
filter
|
应用于元数据的筛选器。筛选器不能为空。 |
| 返回 | 描述 |
|---|---|
int
|
表示已删除文档数量的数字。 |
| 引发 | 描述 |
|---|---|
ValueError
|
如果提供的筛选器为空。 |
adelete_by_metadata_filter async ¶
删除所有匹配特定元数据过滤条件的文档。
此操作不以任何方式使用向量嵌入,它仅移除元数据匹配所提供条件的全部文档。
| 参数 | 描述 |
|---|---|
filter
|
应用于元数据的筛选器。筛选器不能为空。 |
| 返回 | 描述 |
|---|---|
int
|
表示已删除文档数量的数字。 |
| 引发 | 描述 |
|---|---|
ValueError
|
如果提供的筛选器为空。 |
adelete_collection async ¶
从数据库中完全删除该集合。
从数据库中完全删除集合(与 aclear 相反,后者仅清空集合)。存储的数据将丢失且无法恢复,资源将被释放。请谨慎使用。
add_texts ¶
add_texts(
texts: Iterable[str],
metadatas: Iterable[dict] | None = None,
ids: Iterable[str | None] | None = None,
*,
batch_size: int | None = None,
batch_concurrency: int | None = None,
overwrite_concurrency: int | None = None,
**kwargs: Any,
) -> list[str]
通过嵌入运行文本并将它们添加到向量存储中。
如果传递了显式 ID,那么那些 ID 已存在于存储中的条目将被替换。
| 参数 | 描述 |
|---|---|
texts
|
要添加到向量存储的文本。 |
metadatas
|
可选的元数据列表。 |
ids
|
可选的 ID 列表。 |
batch_size
|
每个单独插入 API 请求的文档块大小。如果未提供,则默认为向量存储的全局默认值(该值又会回退到 astrapy 的默认值)。
TYPE: |
batch_concurrency
|
用于并发处理插入批次的线程数。如果未提供,则默认为向量存储的全局设置。
TYPE: |
overwrite_concurrency
|
用于处理每个批次中已存在文档的线程数。如果未提供,则默认为向量存储的全局设置。
TYPE: |
**kwargs
|
其他参数将被忽略。
类型: |
注意
元数据文档属性所允许的字段名称必须遵守特定规则(例如:键不能以美元符号开头,也不能为空)。请参阅文档字段命名规则。
| 返回 | 描述 |
|---|---|
list[str]
|
已添加文本的 ID 列表。 |
| 引发 | 描述 |
|---|---|
AstraDBVectorStoreError
|
如果并非所有文档都能被插入。 |
aadd_texts async ¶
aadd_texts(
texts: Iterable[str],
metadatas: Iterable[dict] | None = None,
ids: Iterable[str | None] | None = None,
*,
batch_size: int | None = None,
batch_concurrency: int | None = None,
overwrite_concurrency: int | None = None,
**kwargs: Any,
) -> list[str]
通过嵌入运行文本并将它们添加到向量存储中。
如果传递了显式 ID,那么那些 ID 已存在于存储中的条目将被替换。
| 参数 | 描述 |
|---|---|
texts
|
要添加到向量存储的文本。 |
metadatas
|
可选的元数据列表。 |
ids
|
可选的 ID 列表。 |
batch_size
|
每个单独插入 API 请求的文档块大小。如果未提供,则默认为向量存储的全局默认值(该值又会回退到 astrapy 的默认值)。
TYPE: |
batch_concurrency
|
用于并发处理插入批次的协程数。如果未提供,则默认为向量存储的全局设置。
TYPE: |
overwrite_concurrency
|
用于并发处理每个批次中已存在文档的协程数。如果未提供,则默认为向量存储的全局设置。
TYPE: |
**kwargs
|
其他参数将被忽略。
类型: |
注意
元数据文档属性所允许的字段名称必须遵守特定规则(例如:键不能以美元符号开头,也不能为空)。请参阅文档字段命名规则。
| 返回 | 描述 |
|---|---|
list[str]
|
已添加文本的 ID 列表。 |
| 引发 | 描述 |
|---|---|
AstraDBVectorStoreError
|
如果并非所有文档都能被插入。 |
update_metadata ¶
update_metadata(
id_to_metadata: dict[str, dict], *, overwrite_concurrency: int | None = None
) -> int
添加/覆盖现有文档的元数据。
对于每个要更新的文档,新的元数据字典将附加到现有的元数据上,覆盖已存在的单个键。
| 参数 | 描述 |
|---|---|
id_to_metadata
|
从要修改的文档 ID 到用于更新的新元数据的映射。此字典中不对应于现有文档的键将被静默忽略。此映射的值是用于更新文档的元数据字典。任何预先存在的元数据都将与这些条目合并,这些条目在逐个键的基础上具有优先权。 |
overwrite_concurrency
|
用于处理更新的线程数。如果未提供,则默认为向量存储的全局设置。
TYPE: |
| 返回 | 描述 |
|---|---|
int
|
成功更新的文档数量(即找到存在的文档, |
int
|
因为即使使用 |
aupdate_metadata async ¶
aupdate_metadata(
id_to_metadata: dict[str, dict], *, overwrite_concurrency: int | None = None
) -> int
添加/覆盖现有文档的元数据。
对于每个要更新的文档,新的元数据字典将附加到现有的元数据上,覆盖已存在的单个键。
| 参数 | 描述 |
|---|---|
id_to_metadata
|
从要修改的文档 ID 到用于更新的新元数据的映射。此字典中不对应于现有文档的键将被静默忽略。此映射的值是用于更新文档的元数据字典。任何预先存在的元数据都将与这些条目合并,这些条目在逐个键的基础上具有优先权。 |
overwrite_concurrency
|
用于处理更新的异步任务数。如果未提供,则默认为向量存储的全局设置。
TYPE: |
| 返回 | 描述 |
|---|---|
int
|
成功更新的文档数量(即找到存在的文档, |
int
|
因为即使使用 |
full_decode_astra_db_found_document ¶
完全解码一个 Astra DB 文档,即解码为 Document+embedding/similarity。
此操作返回一个独立于集合中所用编解码器的表示形式(而输入,一个“原始”的 Astra DB 文档,是依赖于编解码器的)。
根据用于检索它的查询的细节,输入的原始文档可以携带关于嵌入和相似度的信息。如果在结果中找不到这些信息,它们可以被设置为 None。
整个方法可以返回一个 None,以表示编解码器拒绝了转换(例如,因为输入文档被认为是有问题的)。
| 参数 | 描述 |
|---|---|
astra_db_document
|
通过对集合进行
类型: |
| 返回 | 描述 |
|---|---|
AstraDBQueryResult | None
|
一个包含 Document、id、嵌入(如适用)和相似度(如适用)的 AstraDBQueryResult 命名元组,或者如果编解码器拒绝解码,则为整体的 None。 |
full_decode_astra_db_reranked_result ¶
full_decode_astra_db_reranked_result(
astra_db_reranked_result: RerankedResult[DocDict],
) -> AstraDBQueryResult | None
完全解码一个 Astra DB 查找并重排的命中结果(Document+embedding/similarity)。
此操作返回一个独立于集合中所用编解码器的表示形式(而输入的“文档”部分,即来自 find-and-rerank 混合搜索的“原始”Astra DB 响应,是依赖于编解码器的)。
输入的原始文档是 astrapy 的 find_and_rerank 方法返回的内容,即一个 RerankedResult 对象的可迭代对象。缺失的条目(如嵌入)如果在结果中找不到,则被设置为 None。
整个方法可以返回一个 None,以表示编解码器拒绝了转换(例如,因为输入文档被认为是有问题的)。
| 参数 | 描述 |
|---|---|
astra_db_reranked_result
|
通过在集合上调用
类型: |
| 返回 | 描述 |
|---|---|
AstraDBQueryResult | None
|
一个包含 Document、id、嵌入(如适用)和相似度(如适用)的 AstraDBQueryResult 命名元组,或者如果编解码器拒绝解码,则为整体的 None。 |
run_query_raw ¶
run_query_raw(
*,
n: int,
ids: list[str] | None = None,
filter: dict[str, Any] | None = None,
sort: dict[str, Any] | None = None,
include_similarity: bool | None = None,
include_sort_vector: bool = False,
include_embeddings: bool = False,
) -> tuple[list[float] | None, Iterable[DocDict]] | Iterable[DocDict]
在存储的文档上执行通用查询,返回 Astra DB 文档。
返回值的格式是可变的,取决于是否请求从服务器返回“排序向量”。
只有 `n` 参数是必需的。省略所有其他参数会导致查询匹配集合上找到的每一个文档。
该方法不直接公开投影,而是根据调用选项自动确定。
返回的文档与它们从 Astra DB 返回时完全一样(也考虑了投影)。需要进一步的步骤,即随后调用 `convert_astra_db_document` 方法,来重建独立于编解码器的 Document 对象。将检索和解码步骤分开的原因是,调用者可能希望首先去重/丢弃项目,以便只转换实际需要的项目。
| 参数 | 描述 |
|---|---|
n
|
要返回的项目数量。如果集合没有足够的匹配项,可能会返回少于 `n` 的项目。
类型: |
ids
|
用于限制查询的文档 ID 列表。如果提供了此参数,则只有 ID 在所提供列表中的文档才会匹配。如果提供了进一步的查询筛选器(即元数据),匹配项必须同时满足这两个要求。 |
filter
|
元数据筛选部分。如果提供,它必须通过其裸名称引用元数据键(例如 `{"key": 123}`)。此筛选器可以使用“\(or"/"\)and”连接器组合嵌套条件,例如: - `{"tag": "a"}` - `{"$or": [{"tag": "a"}, "label": "b"]}` - `{"$and": [{"tag": {"$in": ["a", "z"]}}, "label": "b"]}` |
sort
|
查询的“排序”子句,例如 `{"$vector": [...]}`、`{"$vectorize": "..."}` 或 `{"mdkey": 1}`。元数据排序条件必须由其“裸”名称表示。 |
include_similarity
|
是否与每个匹配项一起返回相似度分数。需要向量排序。
类型: |
include_sort_vector
|
是否在结果的可迭代对象旁边返回用于 ANN 搜索的查询向量。需要向量排序。请注意,返回值的形状取决于此参数。
类型: |
include_embeddings
|
是否检索匹配项自身的嵌入向量。
类型: |
| 返回 | 描述 |
|---|---|
tuple[list[float] | None, Iterable[DocDict]] | Iterable[DocDict]
|
返回值的形状取决于 `include_sort_vector` 的值。 |
tuple[list[float] | None, Iterable[DocDict]] | Iterable[DocDict]
|
|
tuple[list[float] | None, Iterable[DocDict]] | Iterable[DocDict]
|
|
run_query ¶
run_query(
*,
n: int,
ids: list[str] | None = None,
filter: dict[str, Any] | None = None,
sort: dict[str, Any] | None = None,
include_similarity: bool | None = None,
include_sort_vector: bool = False,
include_embeddings: bool = False,
) -> (
tuple[list[float] | None, Iterable[AstraDBQueryResult]]
| Iterable[AstraDBQueryResult]
)
在存储的文档上执行通用查询,返回 Documents+其他信息。
返回值的格式是可变的,取决于是否请求从服务器返回“排序向量”。
只有 `n` 参数是必需的。省略所有其他参数会导致查询匹配集合上找到的每一个文档。
该方法不直接公开投影,而是根据调用选项自动确定。
返回的 Document 对象是独立于编解码器的。
| 参数 | 描述 |
|---|---|
n
|
要返回的项目数量。在以下情况下可能会返回少于 `n` 的项目:(a) 解码跳过了来自服务器的一些原始条目;(b) 集合没有足够的匹配项。
类型: |
ids
|
用于限制查询的文档 ID 列表。如果提供了此参数,则只有 ID 在所提供列表中的文档才会匹配。如果提供了进一步的查询筛选器(即元数据),匹配项必须同时满足这两个要求。 |
filter
|
元数据筛选部分。如果提供,它必须通过其裸名称引用元数据键(例如 `{"key": 123}`)。此筛选器可以使用“\(or"/"\)and”连接器组合嵌套条件,例如: - `{"tag": "a"}` - `{"$or": [{"tag": "a"}, "label": "b"]}` - `{"$and": [{"tag": {"$in": ["a", "z"]}}, "label": "b"]}` |
sort
|
查询的“排序”子句,例如 `{"$vector": [...]}`、`{"$vectorize": "..."}` 或 `{"mdkey": 1}`。元数据排序条件必须由其“裸”名称表示。 |
include_similarity
|
是否与每个匹配项一起返回相似度分数。需要向量排序。
类型: |
include_sort_vector
|
是否在结果的可迭代对象旁边返回用于 ANN 搜索的查询向量。需要向量排序。请注意,返回值的形状取决于此参数。
类型: |
include_embeddings
|
是否检索匹配项自身的嵌入向量。
类型: |
| 返回 | 描述 |
|---|---|
tuple[list[float] | None, Iterable[AstraDBQueryResult]] | Iterable[AstraDBQueryResult]
|
返回值的形状取决于 `include_sort_vector` 的值。 |
tuple[list[float] | None, Iterable[AstraDBQueryResult]] | Iterable[AstraDBQueryResult]
|
|
tuple[list[float] | None, Iterable[AstraDBQueryResult]] | Iterable[AstraDBQueryResult]
|
|
arun_query_raw async ¶
arun_query_raw(
*,
n: int,
ids: list[str] | None = None,
filter: dict[str, Any] | None = None,
sort: dict[str, Any] | None = None,
include_similarity: bool | None = None,
include_sort_vector: bool = False,
include_embeddings: bool = False,
) -> tuple[list[float] | None, AsyncIterable[DocDict]] | AsyncIterable[DocDict]
在存储的文档上执行通用查询,返回 Astra DB 文档。
返回值的格式是可变的,取决于是否请求从服务器返回“排序向量”。
只有 `n` 参数是必需的。省略所有其他参数会导致查询匹配集合上找到的每一个文档。
该方法不直接公开投影,而是根据调用选项自动确定。
返回的文档与它们从 Astra DB 返回时完全一样(也考虑了投影)。需要进一步的步骤,即随后调用 `convert_astra_db_document` 方法,来重建独立于编解码器的 Document 对象。将检索和解码步骤分开的原因是,调用者可能希望首先去重/丢弃项目,以便只转换实际需要的项目。
| 参数 | 描述 |
|---|---|
n
|
要返回的项目数量。在以下情况下可能会返回少于 `n` 的项目:(a) 解码跳过了来自服务器的一些原始条目;(b) 集合没有足够的匹配项。
类型: |
ids
|
用于限制查询的文档 ID 列表。如果提供了此参数,则只有 ID 在所提供列表中的文档才会匹配。如果提供了进一步的查询筛选器(即元数据),匹配项必须同时满足这两个要求。 |
filter
|
元数据筛选部分。如果提供,它必须通过其裸名称引用元数据键(例如 `{"key": 123}`)。此筛选器可以使用“\(or"/"\)and”连接器组合嵌套条件,例如: - `{"tag": "a"}` - `{"$or": [{"tag": "a"}, "label": "b"]}` - `{"$and": [{"tag": {"$in": ["a", "z"]}}, "label": "b"]}` |
sort
|
查询的“排序”子句,例如 `{"$vector": [...]}`、`{"$vectorize": "..."}` 或 `{"mdkey": 1}`。元数据排序条件必须由其“裸”名称表示。 |
include_similarity
|
是否与每个匹配项一起返回相似度分数。需要向量排序。
类型: |
include_sort_vector
|
是否在结果的可迭代对象旁边返回用于 ANN 搜索的查询向量。需要向量排序。请注意,返回值的形状取决于此参数。
类型: |
include_embeddings
|
是否检索匹配项自身的嵌入向量。
类型: |
| 返回 | 描述 |
|---|---|
tuple[list[float] | None, AsyncIterable[DocDict]] | AsyncIterable[DocDict]
|
返回值的形状取决于 `include_sort_vector` 的值。 |
tuple[list[float] | None, AsyncIterable[DocDict]] | AsyncIterable[DocDict]
|
|
tuple[list[float] | None, AsyncIterable[DocDict]] | AsyncIterable[DocDict]
|
|
arun_query async ¶
arun_query(
*,
n: int,
ids: list[str] | None = None,
filter: dict[str, Any] | None = None,
sort: dict[str, Any] | None = None,
include_similarity: bool | None = None,
include_sort_vector: bool = False,
include_embeddings: bool = False,
) -> (
tuple[list[float] | None, AsyncIterable[AstraDBQueryResult]]
| AsyncIterable[AstraDBQueryResult]
)
在存储的文档上执行通用查询,返回 Documents+其他信息。
返回值的格式是可变的,取决于是否请求从服务器返回“排序向量”。
只有 `n` 参数是必需的。省略所有其他参数会导致查询匹配集合上找到的每一个文档。
该方法不直接公开投影,而是根据调用选项自动确定。
返回的 Document 对象是独立于编解码器的。
| 参数 | 描述 |
|---|---|
n
|
要返回的项目数量。如果集合没有足够的匹配项,可能会返回少于 `n` 的项目。
类型: |
ids
|
用于限制查询的文档 ID 列表。如果提供了此参数,则只有 ID 在所提供列表中的文档才会匹配。如果提供了进一步的查询筛选器(即元数据),匹配项必须同时满足这两个要求。 |
filter
|
元数据筛选部分。如果提供,它必须通过其裸名称引用元数据键(例如 `{"key": 123}`)。此筛选器可以使用“\(or"/"\)and”连接器组合嵌套条件,例如: - `{"tag": "a"}` - `{"$or": [{"tag": "a"}, "label": "b"]}` - `{"$and": [{"tag": {"$in": ["a", "z"]}}, "label": "b"]}` |
sort
|
查询的“排序”子句,例如 `{"$vector": [...]}`、`{"$vectorize": "..."}` 或 `{"mdkey": 1}`。元数据排序条件必须由其“裸”名称表示。 |
include_similarity
|
是否与每个匹配项一起返回相似度分数。需要向量排序。
类型: |
include_sort_vector
|
是否在结果的可迭代对象旁边返回用于 ANN 搜索的查询向量。需要向量排序。请注意,返回值的形状取决于此参数。
类型: |
include_embeddings
|
是否检索匹配项自身的嵌入向量。
类型: |
| 返回 | 描述 |
|---|---|
tuple[list[float] | None, AsyncIterable[AstraDBQueryResult]] | AsyncIterable[AstraDBQueryResult]
|
返回值的形状取决于 `include_sort_vector` 的值。 |
tuple[list[float] | None, AsyncIterable[AstraDBQueryResult]] | AsyncIterable[AstraDBQueryResult]
|
|
tuple[list[float] | None, AsyncIterable[AstraDBQueryResult]] | AsyncIterable[AstraDBQueryResult]
|
|
metadata_search ¶
ametadata_search async ¶
get_by_document_id ¶
aget_by_document_id async ¶
get_by_ids ¶
get_by_ids(
ids: Sequence[str],
/,
batch_size: int | None = None,
batch_concurrency: int | None = None,
) -> list[Document]
根据 ID 获取文档。
返回的文档的 ID 字段设置为文档在向量存储中的 ID。
如果某些 ID 未找到或存在重复的 ID,返回的文档数量可能少于请求的数量。
用户不应假设返回文档的顺序与输入 ID 的顺序相匹配。相反,用户应依赖于返回文档的 ID 字段。
| 参数 | 描述 |
|---|---|
ids
|
要检索的 ID 列表。 |
batch_size
|
如果请求了许多 ID,这些 ID 将被分成块,并运行和整理多个请求。此参数设置每个此类 ID 块的大小。默认值为 80。数据库设置了 100 的硬性限制。
TYPE: |
batch_concurrency
|
如果需要,用于执行多个请求的线程数。默认值为 20。
TYPE: |
| 返回 | 描述 |
|---|---|
list[Document]
|
文档列表。 |
get_by_document_ids ¶
get_by_document_ids(
ids: Sequence[str],
/,
batch_size: int | None = None,
batch_concurrency: int | None = None,
) -> list[Document]
根据 ID 获取文档。
返回的文档的 ID 字段设置为文档在向量存储中的 ID。
如果某些 ID 未找到或存在重复的 ID,返回的文档数量可能少于请求的数量。
用户不应假设返回文档的顺序与输入 ID 的顺序相匹配。相反,用户应依赖于返回文档的 ID 字段。
| 参数 | 描述 |
|---|---|
ids
|
要检索的 ID 列表。 |
batch_size
|
如果请求了许多 ID,这些 ID 将被分成块,并运行和整理多个请求。此参数设置每个此类 ID 块的大小。默认值为 80。数据库设置了 100 的硬性限制。
TYPE: |
batch_concurrency
|
如果需要,用于执行多个请求的线程数。默认值为 20。
TYPE: |
| 返回 | 描述 |
|---|---|
list[Document]
|
文档列表。 |
aget_by_ids async ¶
aget_by_ids(
ids: Sequence[str],
/,
batch_size: int | None = None,
batch_concurrency: int | None = None,
) -> list[Document]
根据 ID 获取文档。
返回的文档的 ID 字段设置为文档在向量存储中的 ID。
如果某些 ID 未找到或存在重复的 ID,返回的文档数量可能少于请求的数量。
用户不应假设返回文档的顺序与输入 ID 的顺序相匹配。相反,用户应依赖于返回文档的 ID 字段。
| 参数 | 描述 |
|---|---|
ids
|
要检索的 ID 列表。 |
batch_size
|
如果请求了许多 ID,这些 ID 将被分成块,并运行和整理多个请求。此参数设置每个此类 ID 块的大小。默认值为 80。数据库设置了 100 的硬性限制。
TYPE: |
batch_concurrency
|
如果需要,用于执行多个请求的线程数。默认值为 20。
TYPE: |
| 返回 | 描述 |
|---|---|
list[Document]
|
文档列表。 |
aget_by_document_ids async ¶
aget_by_document_ids(
ids: Sequence[str],
/,
batch_size: int | None = None,
batch_concurrency: int | None = None,
) -> list[Document]
根据 ID 获取文档。
返回的文档的 ID 字段设置为文档在向量存储中的 ID。
如果某些 ID 未找到或存在重复的 ID,返回的文档数量可能少于请求的数量。
用户不应假设返回文档的顺序与输入 ID 的顺序相匹配。相反,用户应依赖于返回文档的 ID 字段。
| 参数 | 描述 |
|---|---|
ids
|
要检索的 ID 列表。 |
batch_size
|
如果请求了许多 ID,这些 ID 将被分成块,并运行和整理多个请求。此参数设置每个此类 ID 块的大小。默认值为 80。数据库设置了 100 的硬性限制。
TYPE: |
batch_concurrency
|
如果需要,用于执行多个请求的线程数。默认值为 20。
TYPE: |
| 返回 | 描述 |
|---|---|
list[Document]
|
文档列表。 |
similarity_search ¶
similarity_search(
query: str,
k: int = 4,
filter: dict[str, Any] | None = None,
lexical_query: str | None = None,
**kwargs: Any,
) -> list[Document]
similarity_search_with_score ¶
similarity_search_with_score(
query: str,
k: int = 4,
filter: dict[str, Any] | None = None,
lexical_query: str | None = None,
) -> list[tuple[Document, float]]
similarity_search_with_score_id ¶
similarity_search_with_score_id(
query: str,
k: int = 4,
filter: dict[str, Any] | None = None,
lexical_query: str | None = None,
) -> list[tuple[Document, float, str]]
similarity_search_by_vector ¶
similarity_search_with_score_by_vector ¶
similarity_search_with_score_id_by_vector ¶
asimilarity_search async ¶
asimilarity_search(
query: str,
k: int = 4,
filter: dict[str, Any] | None = None,
lexical_query: str | None = None,
**kwargs: Any,
) -> list[Document]
asimilarity_search_with_score async ¶
asimilarity_search_with_score(
query: str,
k: int = 4,
filter: dict[str, Any] | None = None,
lexical_query: str | None = None,
) -> list[tuple[Document, float]]
asimilarity_search_with_score_id async ¶
asimilarity_search_with_score_id(
query: str,
k: int = 4,
filter: dict[str, Any] | None = None,
lexical_query: str | None = None,
) -> list[tuple[Document, float, str]]
asimilarity_search_by_vector async ¶
asimilarity_search_with_score_by_vector async ¶
asimilarity_search_with_score_id_by_vector async ¶
similarity_search_with_embedding_by_vector ¶
asimilarity_search_with_embedding_by_vector async ¶
similarity_search_with_embedding ¶
asimilarity_search_with_embedding async ¶
max_marginal_relevance_search_by_vector ¶
max_marginal_relevance_search_by_vector(
embedding: list[float],
k: int = 4,
fetch_k: int = 20,
lambda_mult: float = 0.5,
filter: dict[str, Any] | None = None,
**kwargs: Any,
) -> list[Document]
返回使用最大边际相关性选择的文档。
最大边际相关性优化查询相似度与所选文档之间的多样性。
| 参数 | 描述 |
|---|---|
embedding
|
用于查找相似文档的嵌入。 |
k
|
要返回的文档数量。
TYPE: |
fetch_k
|
要获取以传递给 MMR 算法的文档数量。
类型: |
lambda_mult
|
一个介于 0 和 1 之间的数字,用于确定结果之间的多样性程度,其中 0 对应最大多样性,1 对应最小多样性。
类型: |
filter
|
要应用的元数据筛选器。 |
**kwargs
|
其他参数将被忽略。
类型: |
| 返回 | 描述 |
|---|---|
list[Document]
|
通过最大边际相关性选择的文档列表。 |
amax_marginal_relevance_search_by_vector async ¶
amax_marginal_relevance_search_by_vector(
embedding: list[float],
k: int = 4,
fetch_k: int = 20,
lambda_mult: float = 0.5,
filter: dict[str, Any] | None = None,
**kwargs: Any,
) -> list[Document]
返回使用最大边际相关性选择的文档。
最大边际相关性优化查询相似度与所选文档之间的多样性。
| 参数 | 描述 |
|---|---|
embedding
|
用于查找相似文档的嵌入。 |
k
|
要返回的文档数量。
TYPE: |
fetch_k
|
要获取以传递给 MMR 算法的文档数量。
类型: |
lambda_mult
|
一个介于 0 和 1 之间的数字,用于确定结果之间的多样性程度,其中 0 对应最大多样性,1 对应最小多样性。
类型: |
filter
|
要应用的元数据筛选器。 |
**kwargs
|
其他参数将被忽略。
类型: |
| 返回 | 描述 |
|---|---|
list[Document]
|
通过最大边际相关性选择的文档列表。 |
max_marginal_relevance_search ¶
max_marginal_relevance_search(
query: str,
k: int = 4,
fetch_k: int = 20,
lambda_mult: float = 0.5,
filter: dict[str, Any] | None = None,
**kwargs: Any,
) -> list[Document]
返回使用最大边际相关性选择的文档。
最大边际相关性优化查询相似度与所选文档之间的多样性。
| 参数 | 描述 |
|---|---|
query
|
用于查找相似文档的查询。
类型: |
k
|
要返回的文档数量。
TYPE: |
fetch_k
|
要获取以传递给 MMR 算法的文档数量。
类型: |
lambda_mult
|
一个介于 0 和 1 之间的数字,用于确定结果之间的多样性程度,其中 0 对应最大多样性,1 对应最小多样性。
类型: |
filter
|
要应用的元数据筛选器。 |
**kwargs
|
其他参数将被忽略。
类型: |
| 返回 | 描述 |
|---|---|
list[Document]
|
通过最大边际相关性选择的文档列表。 |
amax_marginal_relevance_search async ¶
amax_marginal_relevance_search(
query: str,
k: int = 4,
fetch_k: int = 20,
lambda_mult: float = 0.5,
filter: dict[str, Any] | None = None,
**kwargs: Any,
) -> list[Document]
返回使用最大边际相关性选择的文档。
最大边际相关性优化查询相似度与所选文档之间的多样性。
| 参数 | 描述 |
|---|---|
query
|
用于查找相似文档的查询。
类型: |
k
|
要返回的文档数量。
TYPE: |
fetch_k
|
要获取以传递给 MMR 算法的文档数量。
类型: |
lambda_mult
|
一个介于 0 和 1 之间的数字,用于确定结果之间的多样性程度,其中 0 对应最大多样性,1 对应最小多样性。
类型: |
filter
|
要应用的元数据筛选器。 |
**kwargs
|
其他参数将被忽略。
类型: |
| 返回 | 描述 |
|---|---|
list[Document]
|
通过最大边际相关性选择的文档列表。 |
from_texts classmethod ¶
from_texts(
texts: Iterable[str],
embedding: Embeddings | None = None,
metadatas: Iterable[dict] | None = None,
ids: Iterable[str | None] | None = None,
**kwargs: Any,
) -> AstraDBVectorStore
从原始文本创建 Astra DB 向量存储。
| 参数 | 描述 |
|---|---|
texts
|
要插入的文本。 |
embedding
|
在存储中使用的嵌入函数。
TYPE: |
metadatas
|
文本的元数据字典。 |
ids
|
与文本关联的 ID。 |
**kwargs
|
您可以传递任何您会传递给
类型: |
| 返回 | 描述 |
|---|---|
AstraDBVectorStore
|
一个 |
afrom_texts async classmethod ¶
afrom_texts(
texts: Iterable[str],
embedding: Embeddings | None = None,
metadatas: Iterable[dict] | None = None,
ids: Iterable[str | None] | None = None,
**kwargs: Any,
) -> AstraDBVectorStore
从原始文本创建 Astra DB 向量存储。
| 参数 | 描述 |
|---|---|
texts
|
要插入的文本。 |
embedding
|
要使用的嵌入函数。
TYPE: |
metadatas
|
文本的元数据字典。 |
ids
|
与文本关联的 ID。 |
**kwargs
|
您可以传递任何您会传递给
类型: |
| 返回 | 描述 |
|---|---|
AstraDBVectorStore
|
一个 |
from_documents classmethod ¶
from_documents(
documents: Iterable[Document], embedding: Embeddings | None = None, **kwargs: Any
) -> AstraDBVectorStore
从文档列表创建 Astra DB 向量存储。
一个实用方法,它会调用 from_texts。
| 参数 | 描述 |
|---|---|
documents
|
要在存储中插入的 `Document` 对象列表。 |
embedding
|
在存储中使用的嵌入函数。
TYPE: |
**kwargs
|
您可以传递任何您会传递给
类型: |
| 返回 | 描述 |
|---|---|
AstraDBVectorStore
|
一个 |
afrom_documents async classmethod ¶
afrom_documents(
documents: Iterable[Document], embedding: Embeddings | None = None, **kwargs: Any
) -> AstraDBVectorStore
从文档列表创建 Astra DB 向量存储。
一个实用方法,它会调用 afrom_texts。
| 参数 | 描述 |
|---|---|
documents
|
要在存储中插入的 `Document` 对象列表。 |
embedding
|
在存储中使用的嵌入函数。
TYPE: |
**kwargs
|
您可以传递任何您会传递给
类型: |
| 返回 | 描述 |
|---|---|
AstraDBVectorStore
|
一个 |