from pathlib import Path from haystack import Pipeline from haystack.components.converters import TextFileToDocument from haystack.components.preprocessors import DocumentCleaner, DocumentSplitter from haystack.components.writers import DocumentWriter from haystack.document_stores.in_memory import InMemoryDocumentStore from haystack.document_stores.types import DuplicatePolicy source_file = Path("source_docs/haystack-overview.txt") document_store = InMemoryDocumentStore() indexing_pipeline = Pipeline() indexing_pipeline.add_component("converter", TextFileToDocument()) indexing_pipeline.add_component("cleaner", DocumentCleaner()) indexing_pipeline.add_component( "splitter", DocumentSplitter(split_by="word", split_length=12, split_overlap=0), ) indexing_pipeline.add_component( "writer", DocumentWriter(document_store=document_store, policy=DuplicatePolicy.OVERWRITE), ) indexing_pipeline.connect("converter.documents", "cleaner.documents") indexing_pipeline.connect("cleaner.documents", "splitter.documents") indexing_pipeline.connect("splitter.documents", "writer.documents") result = indexing_pipeline.run({"converter": {"sources": [source_file]}}) print(f"documents_written={result['writer']['documents_written']}") print(f"documents_in_store={document_store.count_documents()}")