跳转到内容

文档

langchain_core.documents

用于数据检索和处理工作流的文档模块。

该模块为处理检索增强生成 (RAG) 管道、向量存储和文档处理工作流中的数据提供了核心抽象。

文档 vs. 消息内容

此模块与 langchain_core.messages.content 不同,后者为 LLM 聊天 I/O 提供多模态内容块(消息中的文本、图像、音频等)。

关键区别

  • 文档 (本模块):用于数据检索和处理工作流

    • 向量存储、检索器、RAG 管道
    • 文本分块、嵌入和语义搜索
    • 示例:存储在向量数据库中的 PDF 块
  • 内容块 (messages.content):用于 LLM 对话式 I/O

    • 发送到模型或从模型发出的多模态消息内容
    • 聊天中的工具调用、推理、引用
    • 示例:在聊天消息中发送给视觉模型的图像(通过 ImageContentBlock

虽然两者都可以表示相似的数据类型(文本、文件),但它们在 LangChain 应用程序中服务于不同的架构目的。

langchain_core.documents.base.Document

基类: BaseMedia

用于存储一段文本和相关元数据的类。

注意

Document 用于检索工作流,而非聊天 I/O。要在对话中向 LLM 发送文本,请使用 langchain.messages 中的消息类型。

示例
from langchain_core.documents import Document

document = Document(
    page_content="Hello, world!", metadata={"source": "https://example.com"}
)
方法 描述
__init__

将 page_content 作为位置参数或命名参数传入。

is_lc_serializable

返回 True,因为这个类是可序列化的。

get_lc_namespace

获取 LangChain 对象的命名空间。

__str__

重写 str 以将其限制为 page_content 和 metadata。

lc_id

为此类返回一个用于序列化目的的唯一标识符。

to_json

将对象序列化为 JSON。

to_json_not_implemented

序列化一个“未实现”的对象。

page_content instance-attribute

page_content: str

字符串文本。

lc_secrets property

lc_secrets: dict[str, str]

构造函数参数名称到密钥 ID 的映射。

例如,{"openai_api_key": "OPENAI_API_KEY"}

lc_attributes property

lc_attributes: dict

应包含在序列化 kwargs 中的属性名称列表。

这些属性必须被构造函数接受。

默认为空字典。

id class-attribute instance-attribute

id: str | None = Field(default=None, coerce_numbers_to_str=True)

文档的可选标识符。

理想情况下,这在文档集合中应该是唯一的,并格式化为 UUID,但这不会被强制执行。

metadata class-attribute instance-attribute

metadata: dict = Field(default_factory=dict)

与内容相关的任意元数据。

__init__

__init__(page_content: str, **kwargs: Any) -> None

将 page_content 作为位置参数或命名参数传入。

is_lc_serializable classmethod

is_lc_serializable() -> bool

返回 True,因为这个类是可序列化的。

get_lc_namespace classmethod

get_lc_namespace() -> list[str]

获取 LangChain 对象的命名空间。

返回 描述
list[str]

["langchain", "schema", "document"]

__str__

__str__() -> str

重写 str 以将其限制为 page_content 和 metadata。

返回 描述
str

Document 的字符串表示形式。

lc_id classmethod

lc_id() -> list[str]

为此类返回一个用于序列化目的的唯一标识符。

唯一标识符是一个描述对象路径的字符串列表。

例如,对于类 langchain.llms.openai.OpenAI,id 是 ["langchain", "llms", "openai", "OpenAI"]

to_json

to_json() -> SerializedConstructor | SerializedNotImplemented

将对象序列化为 JSON。

引发 描述
ValueError

如果类有已弃用的属性。

返回 描述
SerializedConstructor | SerializedNotImplemented

一个可 JSON 序列化的对象或一个 SerializedNotImplemented 对象。

to_json_not_implemented

to_json_not_implemented() -> SerializedNotImplemented

序列化一个“未实现”的对象。

返回 描述
SerializedNotImplemented

SerializedNotImplemented.

langchain_core.documents.base.Blob

基类: BaseMedia

用于文档加载和文件处理的原始数据抽象。

表示原始字节或文本,可以是在内存中或通过文件引用。主要由文档加载器使用,以将数据加载与解析解耦。

灵感来源于 Mozilla 的 Blob

从内存中的数据初始化一个 blob
from langchain_core.documents import Blob

blob = Blob.from_data("Hello, world!")

# Read the blob as a string
print(blob.as_string())

# Read the blob as bytes
print(blob.as_bytes())

# Read the blob as a byte stream
with blob.as_bytes_io() as f:
    print(f.read())
从内存加载并指定 MIME 类型和元数据
from langchain_core.documents import Blob

blob = Blob.from_data(
    data="Hello, world!",
    mime_type="text/plain",
    metadata={"source": "https://example.com"},
)
从文件加载 blob
from langchain_core.documents import Blob

blob = Blob.from_path("path/to/file.txt")

# Read the blob as a string
print(blob.as_string())

# Read the blob as bytes
print(blob.as_bytes())

# Read the blob as a byte stream
with blob.as_bytes_io() as f:
    print(f.read())
方法 描述
check_blob_is_valid

验证是否提供了 data 或 path。

as_string

将数据作为字符串读取。

as_bytes

将数据作为字节读取。

as_bytes_io

将数据作为字节流读取。

from_path

从类似路径的对象加载 blob。

from_data

从内存中的数据初始化 Blob

__repr__

返回 blob 的表示形式。

__init__
is_lc_serializable

这个类是否可序列化?

get_lc_namespace

获取 LangChain 对象的命名空间。

lc_id

为此类返回一个用于序列化目的的唯一标识符。

to_json

将对象序列化为 JSON。

to_json_not_implemented

序列化一个“未实现”的对象。

data class-attribute instance-attribute

data: bytes | str | None = None

Blob 关联的原始数据。

mimetype class-attribute instance-attribute

mimetype: str | None = None

MimeType,不要与文件扩展名混淆。

encoding class-attribute instance-attribute

encoding: str = 'utf-8'

如果将字节解码为字符串,则使用的编码。

如果解码为字符串,则使用 utf-8 作为默认编码。

path class-attribute instance-attribute

path: PathLike | None = None

找到原始内容的位置。

source property

source: str | None

blob 的源位置,如果已知则为字符串,否则为 none。

如果 Blob 关联了路径,它将默认为该路径位置。

除非通过名为 "source" 的元数据字段显式设置,在这种情况下将使用该值。

lc_secrets property

lc_secrets: dict[str, str]

构造函数参数名称到密钥 ID 的映射。

例如,{"openai_api_key": "OPENAI_API_KEY"}

lc_attributes property

lc_attributes: dict

应包含在序列化 kwargs 中的属性名称列表。

这些属性必须被构造函数接受。

默认为空字典。

id class-attribute instance-attribute

id: str | None = Field(default=None, coerce_numbers_to_str=True)

文档的可选标识符。

理想情况下,这在文档集合中应该是唯一的,并格式化为 UUID,但这不会被强制执行。

metadata class-attribute instance-attribute

metadata: dict = Field(default_factory=dict)

与内容相关的任意元数据。

check_blob_is_valid classmethod

check_blob_is_valid(values: dict[str, Any]) -> Any

验证是否提供了 data 或 path。

as_string

as_string() -> str

将数据作为字符串读取。

引发 描述
ValueError

如果 blob 无法表示为字符串。

返回 描述
str

作为字符串的数据。

as_bytes

as_bytes() -> bytes

将数据作为字节读取。

引发 描述
ValueError

如果 blob 无法表示为字节。

返回 描述
字节

作为字节的数据。

as_bytes_io

as_bytes_io() -> Generator[BytesIO | BufferedReader, None, None]

将数据作为字节流读取。

引发 描述
NotImplementedError

如果 blob 无法表示为字节流。

YIELDS 描述
BytesIO | BufferedReader

作为字节流的数据。

from_path classmethod

from_path(
    path: PathLike,
    *,
    encoding: str = "utf-8",
    mime_type: str | None = None,
    guess_type: bool = True,
    metadata: dict | None = None,
) -> Blob

从类似路径的对象加载 blob。

参数 描述
path

要读取的文件的类路径对象

类型: PathLike

encoding

如果将字节解码为字符串,则使用的编码

类型: str 默认: 'utf-8'

mime_type

如果提供,将设置为数据的 MIME 类型

类型: str | None 默认值: None

guess_type

如果为 True,且未提供 MIME 类型,则将从文件扩展名猜测 MIME 类型

类型: bool 默认值: True

metadata

Blob 关联的元数据

类型: dict | None 默认值: None

返回 描述
Blob

Blob 实例

from_data classmethod

from_data(
    data: str | bytes,
    *,
    encoding: str = "utf-8",
    mime_type: str | None = None,
    path: str | None = None,
    metadata: dict | None = None,
) -> Blob

从内存中的数据初始化 Blob

参数 描述
data

Blob 关联的内存中数据

类型: str | bytes

encoding

如果将字节解码为字符串,则使用的编码

类型: str 默认: 'utf-8'

mime_type

如果提供,将设置为数据的 MIME 类型

类型: str | None 默认值: None

path

如果提供,将设置为数据来源的源

类型: str | None 默认值: None

metadata

Blob 关联的元数据

类型: dict | None 默认值: None

返回 描述
Blob

Blob 实例

__repr__

__repr__() -> str

返回 blob 的表示形式。

__init__

__init__(*args: Any, **kwargs: Any) -> None

is_lc_serializable classmethod

is_lc_serializable() -> bool

这个类是否可序列化?

根据设计,即使一个类继承自 Serializable,它默认也是不可序列化的。这是为了防止意外序列化不应被序列化的对象。

返回 描述
bool

类是否可序列化。默认为 False

get_lc_namespace classmethod

get_lc_namespace() -> list[str]

获取 LangChain 对象的命名空间。

例如,如果类是 langchain.llms.openai.OpenAI,那么命名空间是 ["langchain", "llms", "openai"]

返回 描述
list[str]

命名空间。

lc_id classmethod

lc_id() -> list[str]

为此类返回一个用于序列化目的的唯一标识符。

唯一标识符是一个描述对象路径的字符串列表。

例如,对于类 langchain.llms.openai.OpenAI,id 是 ["langchain", "llms", "openai", "OpenAI"]

to_json

to_json() -> SerializedConstructor | SerializedNotImplemented

将对象序列化为 JSON。

引发 描述
ValueError

如果类有已弃用的属性。

返回 描述
SerializedConstructor | SerializedNotImplemented

一个可 JSON 序列化的对象或一个 SerializedNotImplemented 对象。

to_json_not_implemented

to_json_not_implemented() -> SerializedNotImplemented

序列化一个“未实现”的对象。

返回 描述
SerializedNotImplemented

SerializedNotImplemented.

langchain_core.documents.base.BaseMedia

基类: Serializable

用于检索和数据处理工作流中内容内容的基类。

为需要存储、索引或搜索的内容提供通用字段。

注意

对于聊天消息中的多模态内容(发送到/来自 LLM 的图像、音频),请改用 langchain.messages 内容块。

方法 描述
__init__
is_lc_serializable

这个类是否可序列化?

get_lc_namespace

获取 LangChain 对象的命名空间。

lc_id

为此类返回一个用于序列化目的的唯一标识符。

to_json

将对象序列化为 JSON。

to_json_not_implemented

序列化一个“未实现”的对象。

id class-attribute instance-attribute

id: str | None = Field(default=None, coerce_numbers_to_str=True)

文档的可选标识符。

理想情况下,这在文档集合中应该是唯一的,并格式化为 UUID,但这不会被强制执行。

metadata class-attribute instance-attribute

metadata: dict = Field(default_factory=dict)

与内容相关的任意元数据。

lc_secrets property

lc_secrets: dict[str, str]

构造函数参数名称到密钥 ID 的映射。

例如,{"openai_api_key": "OPENAI_API_KEY"}

lc_attributes property

lc_attributes: dict

应包含在序列化 kwargs 中的属性名称列表。

这些属性必须被构造函数接受。

默认为空字典。

__init__

__init__(*args: Any, **kwargs: Any) -> None

is_lc_serializable classmethod

is_lc_serializable() -> bool

这个类是否可序列化?

根据设计,即使一个类继承自 Serializable,它默认也是不可序列化的。这是为了防止意外序列化不应被序列化的对象。

返回 描述
bool

类是否可序列化。默认为 False

get_lc_namespace classmethod

get_lc_namespace() -> list[str]

获取 LangChain 对象的命名空间。

例如,如果类是 langchain.llms.openai.OpenAI,那么命名空间是 ["langchain", "llms", "openai"]

返回 描述
list[str]

命名空间。

lc_id classmethod

lc_id() -> list[str]

为此类返回一个用于序列化目的的唯一标识符。

唯一标识符是一个描述对象路径的字符串列表。

例如,对于类 langchain.llms.openai.OpenAI,id 是 ["langchain", "llms", "openai", "OpenAI"]

to_json

to_json() -> SerializedConstructor | SerializedNotImplemented

将对象序列化为 JSON。

引发 描述
ValueError

如果类有已弃用的属性。

返回 描述
SerializedConstructor | SerializedNotImplemented

一个可 JSON 序列化的对象或一个 SerializedNotImplemented 对象。

to_json_not_implemented

to_json_not_implemented() -> SerializedNotImplemented

序列化一个“未实现”的对象。

返回 描述
SerializedNotImplemented

SerializedNotImplemented.

© . This site is unofficial and not affiliated with LangChain, Inc.