链接#
- class langchain_community.graph_vectorstores.links.Link(kind: str, direction: Literal['in', 'out', 'bidir'], tag: str)[source]#
测试版
此功能处于测试阶段。我们正在积极开发中,因此API可能会发生变化。
指向/来自给定类型的标签的链接。
在
graph vector store
中的文档通过“链接”连接。 链接在文档和标签之间形成一个二分图:文档连接到标签,标签连接到其他文档。 当从图向量存储中检索文档时,如果两个文档连接到同一个标签,则这对文档的连接深度为一。链接有一个
kind
属性,用于命名不同的标签标识符。 例如,指向关键字的链接可能使用kw
类型,而指向URL的链接可能使用url
类型。 这允许在不同的上下文中使用相同的标签值,而不会导致名称冲突。链接是有方向的。链接的方向性控制在检索时如何遍历图。 例如,给定文档
A
和B
,通过链接连接到标签T
:A 到 T
B 到 T
结果
出站
入站
检索从A遍历到B
传入
传入
没有从A到B的遍历
出站
入站
从A到B没有遍历
bidir
incoming
检索从A遍历到B
bidir
outgoing
没有从A到B的遍历
outgoing
bidir
检索从A遍历到B
incoming
bidir
没有从A到B的遍历
有向链接使得描述诸如术语引用/定义之类的关系成为可能:术语定义通常与使用该术语的任何文档相关,但使用术语的完整文档集通常与术语的定义无关。
如何向文档添加链接#
如何创建链接#
你可以使用Link类的构造函数
incoming()
、outgoing()
和bidir()
来创建链接:from langchain_community.graph_vectorstores.links import Link print(Link.bidir(kind="location", tag="Paris"))
Link(kind='location', direction='bidir', tag='Paris')
使用链接扩展文档#
既然我们已经知道如何创建链接,让我们将它们与一些文档关联起来。 这些边将加强共享关键词的文档之间的连接, 当使用图向量存储来检索文档时。
首先,我们将加载一些文本并将其分割成较小的部分。 然后,我们将为每个文档添加一个链接,将它们全部连接在一起:
from langchain_community.document_loaders import TextLoader from langchain_community.graph_vectorstores.links import add_links from langchain_text_splitters import CharacterTextSplitter loader = TextLoader("state_of_the_union.txt") raw_documents = loader.load() text_splitter = CharacterTextSplitter(chunk_size=1000, chunk_overlap=0) documents = text_splitter.split_documents(raw_documents) for doc in documents: add_links(doc, Link.bidir(kind="genre", tag="oratory")) print(documents[0].metadata)
{'source': 'state_of_the_union.txt', 'links': [Link(kind='genre', direction='bidir', tag='oratory')]}
正如我们所看到的,每个文档的元数据现在都包含一个指向流派
oratory
的双向链接。然后可以将文档添加到图向量存储中:
from langchain_community.graph_vectorstores import CassandraGraphVectorStore graph_vectorstore = CassandraGraphVectorStore.from_documents( documents=documents, embeddings=... )
属性
方法
__init__
(kind, direction, tag)bidir
(kind, tag)创建一个双向链接。
incoming
(kind, tag)创建一个传入链接。
outgoing
(kind, tag)创建一个出站链接。
- __init__(kind: str, direction: Literal['in', 'out', 'bidir'], tag: str) None #
- Parameters:
kind (str)
方向 (字面量['in', 'out', 'bidir'])
标签 (字符串)
- Return type:
无
- static bidir(kind: str, tag: str) Link [源代码]#
创建一个双向链接。
- Parameters:
kind (str) – 链接类型。
tag (str) – 链接标签。
- Return type:
- Parameters:
kind (str)
方向 (字面量['in', 'out', 'bidir'])
标签 (字符串)