> Fetch clean Markdown by appending `.md` to any page URL under https://signalwire.com/docs or requesting it with the HTTP header `Accept: text/markdown`. The root index at https://signalwire.com/docs/llms.txt lists the available documentation indexes. # IndexBuilder > Build searchable vector indexes from document directories. [sw-search]: /docs/server-sdks/reference/python/agents/cli/sw-search [documentprocessor]: /docs/server-sdks/reference/python/agents/search/document-processor [resolvemodelalias]: /docs/server-sdks/reference/python/agents/search/helpers [buildindexfromsources]: /docs/server-sdks/reference/python/agents/search/index-builder/build-index-from-sources [buildindex]: /docs/server-sdks/reference/python/agents/search/index-builder/build-index [validateindex]: /docs/server-sdks/reference/python/agents/search/index-builder/validate-index `IndexBuilder` processes document directories into searchable indexes. It handles file discovery, text extraction, chunking, embedding generation, and storage into either SQLite (`.swsearch` files) or pgvector backends. This is the programmatic equivalent of the [`sw-search`][sw-search] CLI tool. ```python from signalwire.search import IndexBuilder ``` > **Warning** > > Requires search dependencies. Install with `pip install signalwire-sdk[search-full]` > for full document processing support. ## **Properties** **`model_name`** `str` Name of the sentence transformer model used for embeddings. --- **`chunking_strategy`** `str` Active chunking strategy passed to the internal `DocumentProcessor`. --- **`min_chunk_size`** `int` — default: 0 For the `markdown` strategy, the minimum words a section needs before a heading is allowed to start a new chunk. Shorter sections merge forward into the next one instead of being emitted alone. `0` splits at every heading. Recorded in the index metadata. --- **`backend`** `str` Storage backend. Either `"sqlite"` or `"pgvector"`. --- **`doc_processor`** `DocumentProcessor` The [`DocumentProcessor`][documentprocessor] instance used for chunking. --- **`model`** `SentenceTransformer | None` — default: None The loaded sentence transformer model. `None` until the first call to `build_index()` or `build_index_from_sources()`. --- ## **Methods** #### [build\_index\_from\_sources](/docs/server-sdks/reference/python/agents/search/index-builder/build-index-from-sources) Build a complete search index from multiple source files and directories. #### [build\_index](/docs/server-sdks/reference/python/agents/search/index-builder/build-index) Build a search index from a single directory. #### [validate\_index](/docs/server-sdks/reference/python/agents/search/index-builder/validate-index) Validate an existing .swsearch index file. > Build searchable vector indexes from document directories. ## Docs - [build_index](https://signalwire.com/docs/server-sdks/reference/python/agents/search/index-builder/build-index.md): Build a search index from a single directory. - [build_index_from_sources](https://signalwire.com/docs/server-sdks/reference/python/agents/search/index-builder/build-index-from-sources.md): Build a complete search index from multiple source files and directories. - [validate_index](https://signalwire.com/docs/server-sdks/reference/python/agents/search/index-builder/validate-index.md): Validate an existing .swsearch index file.