core,community: add beta decorator to missed GraphVectorStore extensions (#25562)

pull/25563/head
Erick Friis 1 month ago committed by GitHub
parent dd2d094adc
commit e01c6789c4
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

@ -9,6 +9,7 @@ from typing import (
Type,
)
from langchain_core._api import beta
from langchain_core.documents import Document
from langchain_core.embeddings import Embeddings
from langchain_core.graph_vectorstores.base import (
@ -23,6 +24,7 @@ if TYPE_CHECKING:
from cassandra.cluster import Session
@beta()
class CassandraGraphVectorStore(GraphVectorStore):
def __init__(
self,

@ -1,5 +1,6 @@
from typing import Any, Dict, Iterable, List, Optional, Set, Union
from langchain_core._api import beta
from langchain_core.documents import Document
from langchain_core.graph_vectorstores.links import Link
@ -11,6 +12,7 @@ from langchain_community.graph_vectorstores.extractors.link_extractor import (
GLiNERInput = Union[str, Document]
@beta()
class GLiNERLinkExtractor(LinkExtractor[GLiNERInput]):
"""Link documents with common named entities using GLiNER <https://github.com/urchade/GLiNER>."""

@ -1,5 +1,6 @@
from typing import Callable, List, Set
from langchain_core._api import beta
from langchain_core.documents import Document
from langchain_core.graph_vectorstores.links import Link
@ -18,6 +19,7 @@ _CHILD: str = "c:"
_SIBLING: str = "s:"
@beta()
class HierarchyLinkExtractor(LinkExtractor[HierarchyInput]):
def __init__(
self,

@ -4,6 +4,7 @@ from dataclasses import dataclass
from typing import TYPE_CHECKING, List, Optional, Set, Union
from urllib.parse import urldefrag, urljoin, urlparse
from langchain_core._api import beta
from langchain_core.documents import Document
from langchain_core.graph_vectorstores import Link
@ -61,6 +62,7 @@ class HtmlInput:
base_url: str
@beta()
class HtmlLinkExtractor(LinkExtractor[HtmlInput]):
def __init__(self, *, kind: str = "hyperlink", drop_fragments: bool = True):
"""Extract hyperlinks from HTML content.

@ -1,5 +1,6 @@
from typing import Any, Dict, Iterable, Optional, Set, Union
from langchain_core._api import beta
from langchain_core.documents import Document
from langchain_core.graph_vectorstores.links import Link
@ -10,6 +11,7 @@ from langchain_community.graph_vectorstores.extractors.link_extractor import (
KeybertInput = Union[str, Document]
@beta()
class KeybertLinkExtractor(LinkExtractor[KeybertInput]):
def __init__(
self,

@ -3,6 +3,7 @@ from __future__ import annotations
from abc import ABC, abstractmethod
from typing import Generic, Iterable, Set, TypeVar
from langchain_core._api import beta
from langchain_core.graph_vectorstores import Link
InputT = TypeVar("InputT")
@ -10,6 +11,7 @@ InputT = TypeVar("InputT")
METADATA_LINKS_KEY = "links"
@beta()
class LinkExtractor(ABC, Generic[InputT]):
"""Interface for extracting links (incoming, outgoing, bidirectional)."""

@ -1,5 +1,6 @@
from typing import Callable, Iterable, Set, TypeVar
from langchain_core._api import beta
from langchain_core.graph_vectorstores import Link
from langchain_community.graph_vectorstores.extractors.link_extractor import (
@ -10,6 +11,7 @@ InputT = TypeVar("InputT")
UnderlyingInputT = TypeVar("UnderlyingInputT")
@beta()
class LinkExtractorAdapter(LinkExtractor[InputT]):
def __init__(
self,

@ -1,5 +1,6 @@
from typing import Any, Sequence
from langchain_core._api import beta
from langchain_core.documents import Document
from langchain_core.documents.transformers import BaseDocumentTransformer
from langchain_core.graph_vectorstores.links import copy_with_links
@ -9,6 +10,7 @@ from langchain_community.graph_vectorstores.extractors.link_extractor import (
)
@beta()
class LinkExtractorTransformer(BaseDocumentTransformer):
"""DocumentTransformer for applying one or more LinkExtractors.

@ -32,6 +32,7 @@ def _has_next(iterator: Iterator) -> bool:
return next(iterator, sentinel) is not sentinel
@beta()
class Node(Serializable):
"""Node in the GraphVectorStore.
@ -115,6 +116,7 @@ def _documents_to_nodes(documents: Iterable[Document]) -> Iterator[Node]:
)
@beta()
def nodes_to_documents(nodes: Iterable[Node]) -> Iterator[Document]:
for node in nodes:
metadata = node.metadata.copy()

@ -1,9 +1,11 @@
from dataclasses import dataclass
from typing import Iterable, List, Literal, Union
from langchain_core._api import beta
from langchain_core.documents import Document
@beta()
@dataclass(frozen=True)
class Link:
"""A link to/from a tag of a given tag.
@ -38,6 +40,7 @@ class Link:
METADATA_LINKS_KEY = "links"
@beta()
def get_links(doc: Document) -> List[Link]:
"""Get the links from a document.
Args:
@ -54,6 +57,7 @@ def get_links(doc: Document) -> List[Link]:
return links
@beta()
def add_links(doc: Document, *links: Union[Link, Iterable[Link]]) -> None:
"""Add links to the given metadata.
Args:
@ -68,6 +72,7 @@ def add_links(doc: Document, *links: Union[Link, Iterable[Link]]) -> None:
links_in_metadata.append(link)
@beta()
def copy_with_links(doc: Document, *links: Union[Link, Iterable[Link]]) -> Document:
"""Return a document with the given links added.

Loading…
Cancel
Save