langchain.js
    Preparing search index...

    A type of document retriever that splits input documents into smaller chunks while separately storing and preserving the original documents. The small chunks are embedded, then on retrieval, the original "parent" documents are retrieved.

    This strikes a balance between better targeted retrieval with small documents and the more context-rich larger documents.

    const retriever = new ParentDocumentRetriever({
    vectorstore: new MemoryVectorStore(new OpenAIEmbeddings()),
    byteStore: new InMemoryStore<Uint8Array>(),
    parentSplitter: new RecursiveCharacterTextSplitter({
    chunkOverlap: 0,
    chunkSize: 500,
    }),
    childSplitter: new RecursiveCharacterTextSplitter({
    chunkOverlap: 0,
    chunkSize: 50,
    }),
    childK: 20,
    parentK: 5,
    });

    const parentDocuments = await getDocuments();
    await retriever.addDocuments(parentDocuments);
    const retrievedDocs = await retriever.getRelevantDocuments("justice breyer");

    Hierarchy (View Summary)

    Index

    Constructors

    Properties

    childDocumentRetriever: any
    childK?: number
    childSplitter: TextSplitter
    docstore: BaseStoreInterface<string, Document>
    documentCompressor: undefined | BaseDocumentCompressor
    documentCompressorFilteringFn?: (docs: SubDocs) => SubDocs
    idKey: string = "doc_id"
    lc_namespace: string[] = ...
    parentK?: number
    parentSplitter?: any
    vectorstore: VectorStoreInterface

    Methods

    • Parameters

      • query: string

      Returns Promise<Document[]>

    • Parameters

      • parentDoc: Record<string, BaseMessage>
      • childDocs: Document[]
      • addToDocstore: boolean

      Returns Promise<void>

    • Adds documents to the docstore and vectorstores. If a retriever is provided, it will be used to add documents instead of the vectorstore.

      Parameters

      • docs: Document[]

        The documents to add

      • Optionalconfig: { addToDocstore?: boolean; childDocChunkHeaderOptions?: any; ids?: string[] }
        • OptionaladdToDocstore?: boolean

          Boolean of whether to add documents to docstore. This can be false if and only if ids are provided. You may want to set this to False if the documents are already in the docstore and you don't want to re-add them.

        • OptionalchildDocChunkHeaderOptions?: any
        • Optionalids?: string[]

          Optional list of ids for documents. If provided should be the same length as the list of documents. Can provided if parent documents are already in the document store and you don't want to re-add to the docstore. If not provided, random UUIDs will be used as ids.

      Returns Promise<void>

    • Returns string