DocumentationAPI Reference📓 Tutorials🧑‍🍳 Cookbook🤝 Integrations💜 Discord🎨 Studio (Waitlist)
API Reference

Stores your texts and meta data and provides them to the Retriever at query time.

Module document_store

BM25DocumentStats

A dataclass for managing document statistics for BM25 retrieval.

Arguments:

  • freq_token: A Counter of token frequencies in the document.
  • doc_len: Number of tokens in the document.

InMemoryDocumentStore

Stores data in-memory. It's ephemeral and cannot be saved to disk.

InMemoryDocumentStore.__init__

def __init__(bm25_tokenization_regex: str = r"(?u)\b\w\w+\b",
             bm25_algorithm: Literal["BM25Okapi", "BM25L",
                                     "BM25Plus"] = "BM25L",
             bm25_parameters: Optional[Dict] = None,
             embedding_similarity_function: Literal["dot_product",
                                                    "cosine"] = "dot_product",
             index: Optional[str] = None)

Initializes the DocumentStore.

Arguments:

  • bm25_tokenization_regex: The regular expression used to tokenize the text for BM25 retrieval.
  • bm25_algorithm: The BM25 algorithm to use. One of "BM25Okapi", "BM25L", or "BM25Plus".
  • bm25_parameters: Parameters for BM25 implementation in a dictionary format. For example: {'k1':1.5, 'b':0.75, 'epsilon':0.25} You can learn more about these parameters by visiting https://github.com/dorianbrown/rank_bm25.
  • embedding_similarity_function: The similarity function used to compare Documents embeddings. One of "dot_product" (default) or "cosine". To choose the most appropriate function, look for information about your embedding model.
  • index: A specific index to store the documents. If not specified, a random UUID is used. Using the same index allows you to store documents across multiple InMemoryDocumentStore instances.

InMemoryDocumentStore.storage

@property
def storage() -> Dict[str, Document]

Utility property that returns the storage used by this instance of InMemoryDocumentStore.

InMemoryDocumentStore.to_dict

def to_dict() -> Dict[str, Any]

Serializes the component to a dictionary.

Returns:

Dictionary with serialized data.

InMemoryDocumentStore.from_dict

@classmethod
def from_dict(cls, data: Dict[str, Any]) -> "InMemoryDocumentStore"

Deserializes the component from a dictionary.

Arguments:

  • data: The dictionary to deserialize from.

Returns:

The deserialized component.

InMemoryDocumentStore.save_to_disk

def save_to_disk(path: str) -> None

Write the database and its' data to disk as a JSON file.

Arguments:

  • path: The path to the JSON file.

InMemoryDocumentStore.load_from_disk

@classmethod
def load_from_disk(cls, path: str) -> "InMemoryDocumentStore"

Load the database and its' data from disk as a JSON file.

Arguments:

  • path: The path to the JSON file.

Returns:

The loaded InMemoryDocumentStore.

InMemoryDocumentStore.count_documents

def count_documents() -> int

Returns the number of how many documents are present in the DocumentStore.

InMemoryDocumentStore.filter_documents

def filter_documents(
        filters: Optional[Dict[str, Any]] = None) -> List[Document]

Returns the documents that match the filters provided.

For a detailed specification of the filters, refer to the DocumentStore.filter_documents() protocol documentation.

Arguments:

  • filters: The filters to apply to the document list.

Returns:

A list of Documents that match the given filters.

InMemoryDocumentStore.write_documents

def write_documents(documents: List[Document],
                    policy: DuplicatePolicy = DuplicatePolicy.NONE) -> int

Refer to the DocumentStore.write_documents() protocol documentation.

If policy is set to DuplicatePolicy.NONE defaults to DuplicatePolicy.FAIL.

InMemoryDocumentStore.delete_documents

def delete_documents(document_ids: List[str]) -> None

Deletes all documents with matching document_ids from the DocumentStore.

Arguments:

  • document_ids: The object_ids to delete.

InMemoryDocumentStore.bm25_retrieval

def bm25_retrieval(query: str,
                   filters: Optional[Dict[str, Any]] = None,
                   top_k: int = 10,
                   scale_score: bool = False) -> List[Document]

Retrieves documents that are most relevant to the query using BM25 algorithm.

Arguments:

  • query: The query string.
  • filters: A dictionary with filters to narrow down the search space.
  • top_k: The number of top documents to retrieve. Default is 10.
  • scale_score: Whether to scale the scores of the retrieved documents. Default is False.

Returns:

A list of the top_k documents most relevant to the query.

InMemoryDocumentStore.embedding_retrieval

def embedding_retrieval(query_embedding: List[float],
                        filters: Optional[Dict[str, Any]] = None,
                        top_k: int = 10,
                        scale_score: bool = False,
                        return_embedding: bool = False) -> List[Document]

Retrieves documents that are most similar to the query embedding using a vector similarity metric.

Arguments:

  • query_embedding: Embedding of the query.
  • filters: A dictionary with filters to narrow down the search space.
  • top_k: The number of top documents to retrieve. Default is 10.
  • scale_score: Whether to scale the scores of the retrieved Documents. Default is False.
  • return_embedding: Whether to return the embedding of the retrieved Documents. Default is False.

Returns:

A list of the top_k documents most relevant to the query.