Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.enconvo.ai/llms.txt

Use this file to discover all available pages before exploring further.

Overview

This guide covers the technical architecture and advanced configuration options for EnConvo’s knowledge base system. If you are new to knowledge bases, start with the Knowledge Base introduction first. EnConvo’s knowledge base is built on a dual-database architecture: LanceDB for vector storage and similarity search, and SQLite (via Drizzle ORM) for metadata management. This combination provides fast semantic search with rich metadata capabilities.

Architecture

Dual Database Design

Document → Chunking → Embedding → Storage

                          ┌──────────┼──────────┐
                          │                       │
                     LanceDB                  SQLite
                  (Vector Store)           (Metadata)
                          │                       │
                  Embedding vectors        Knowledge base records
                  Text chunks              Attachment details
                  Similarity search        Content chunk metadata
LanceDB stores document embeddings for semantic similarity search. Each knowledge base gets its own LanceDB table plus an attachments table. Data is stored locally at ~/.config/enconvo/cache/knowledge_base/{dbName}. SQLite stores structured metadata: knowledge base records, attachment details, and content chunk information. Schema migrations are managed through Drizzle ORM.

Knowledge Base Identifiers

Each knowledge base is identified by a composite key in the format {dbName}|{tableName}. This key is used throughout the system when referencing a specific knowledge base.

Document Processing Pipeline

When you add content to a knowledge base, it flows through a multi-stage pipeline.

Stage 1: Content Loading

The AttachmentLoader routes content to the appropriate loader based on type:
Content TypeLoaderDescription
PDFpdf-parseExtracts text from PDF documents
DOCXmammothConverts Word documents to text
PPTXofficeparserExtracts text from PowerPoint presentations
EPUBepub2Parses e-book content
XLSX / CSVxlsx, d3-dsvReads spreadsheet data
TXT / MDDirect readPlain text and Markdown files
HTMLcheerio, html-to-textParses and extracts text from HTML
XML / JSONfast-xml-parserStructured data parsing
ImagesOCR ProviderOptical character recognition
Audio / VideoTranscription ProviderSpeech-to-text conversion
WebpagesLink Reader ProviderScrapes page content (supports sitemap.xml for entire websites)
YouTubeDedicated handlerExtracts transcript and metadata

Stage 2: Text Chunking

After content is extracted, it is split into manageable chunks using RecursiveCharacterTextSplitter from LangChain:
ParameterValueDescription
Chunk size6,000 charactersMaximum size of each text chunk
Chunk overlap100 charactersOverlap between consecutive chunks for context continuity
The recursive splitter tries to split on natural boundaries in this order:
  1. Double newlines (paragraphs)
  2. Single newlines
  3. Sentences (periods, exclamation marks, question marks)
  4. Words (spaces)
  5. Characters (last resort)
The 6,000-character chunk size balances retrieval precision with context completeness. Smaller chunks improve precision but may lose context. Larger chunks preserve context but may include irrelevant information.

Stage 3: Embedding

Each text chunk is converted to a vector embedding using your configured embedding model. EnConvo uses a custom EnConvoEmbeddingFunction that wraps the platform’s embedding provider system. Embeddings are generated in batches with concurrent processing for performance.

Stage 4: Storage

Embedded chunks are stored in LanceDB with the following schema:
FieldTypeDescription
textSource textThe original text chunk
vectorFloat32 arrayThe embedding vector
idUTF-8 stringUnique chunk identifier
Additional metadataVariousSource file, position, timestamps, etc.

Embedding Model Selection

The choice of embedding model significantly impacts search quality. EnConvo supports multiple embedding providers.

Cloud Embedding Models

ProviderModelDimensionsBest For
OpenAItext-embedding-3-small1,536General purpose, good balance of quality and cost
OpenAItext-embedding-3-large3,072Highest quality, best for critical applications
Voyage AIvoyage-31,024Code and technical documentation
Cohereembed-english-v3.01,024English text, good multilingual support

Local Embedding Models

ProviderModelDescription
Ollamanomic-embed-textGood general-purpose local model
Ollamamxbai-embed-largeHigher quality, more resource intensive
LM StudioVariousAny GGUF embedding model
Once a knowledge base is created with a specific embedding model, you cannot change the model without re-indexing all content. The embedding dimensions must match.

Choosing an Embedding Model

Consider these factors:
  1. Quality: Larger models generally produce better embeddings but are slower and more expensive
  2. Privacy: Local models keep all data on your Mac; cloud models send text chunks to the provider
  3. Cost: Cloud models charge per token; local models use your hardware
  4. Speed: Cloud models are typically faster for large batches; local models avoid network latency
  5. Language: Some models handle multilingual content better than others

Search and Retrieval

EnConvo uses a hybrid search approach combining vector similarity with full-text search. The primary search method. When you query the knowledge base, your query is embedded using the same model, then compared against all stored vectors using cosine similarity.
Query "How does authentication work?"
  → Embed query → [0.12, -0.45, 0.78, ...]
  → Compare against all chunk vectors
  → Return top-K most similar chunks

Full-Text Search (FTS)

LanceDB also supports full-text search with fuzzy matching for keyword-based retrieval. This catches cases where exact terms matter more than semantic meaning.
Query "OAuth2 PKCE flow"
  → Full-text index lookup with fuzziness
  → Return matching chunks

Hybrid Search Strategy

For best results, EnConvo combines both approaches:
  1. Run vector similarity search for semantic matches
  2. Run full-text search for keyword matches
  3. Merge and deduplicate results
  4. Apply reranking (if configured) to produce the final ranking

Reranking

Reranking models re-score search results for improved relevance. After the initial retrieval, a reranker evaluates each result against the query and reorders them.
ProviderModelDescription
Coherererank-english-v3.0High-quality English reranking
Coherererank-multilingual-v3.0Multilingual reranking
SiliconFlowVariousAlternative reranking provider
Reranking is especially useful when you have large knowledge bases. The initial search retrieves a broad set of candidates, and the reranker narrows them down to the most relevant results.

Performance Optimization

Batch Embedding

When adding multiple documents, EnConvo processes embeddings in batches with concurrent processing. This significantly reduces the time to index large document collections compared to sequential processing.

Index Management

LanceDB supports creating indexes for faster search:
  • Vector index: Speeds up similarity search for large tables
  • FTS index: Enables full-text search with fuzzy matching
Indexes are created automatically when needed. For very large knowledge bases, you may want to trigger re-indexing after bulk imports.

Storage Considerations

Knowledge Base SizeExpected StorageNotes
100 documents~50-200 MBDepends on document size and embedding dimensions
1,000 documents~500 MB - 2 GBConsider using a dedicated storage location
10,000+ documents2+ GBRecommend SSD storage for best performance

Multi-Knowledge Base Management

You can create multiple knowledge bases for different purposes. Each operates independently with its own:
  • Embedding model
  • Document collection
  • Search index
  • Storage location

Organization Strategies

StrategyDescriptionExample
By projectOne KB per projectproject-alpha, project-beta
By typeSeparate KBs by content typecode-docs, meeting-notes, research
By teamTeam-specific knowledgeengineering, marketing, support
By scopePersonal vs sharedpersonal-notes, company-wiki

Querying Multiple Knowledge Bases

You can search across multiple knowledge bases simultaneously by referencing them with the @kb modifier or by configuring auto-reference to include specific collections.

Knowledge Base API

The knowledge base extension exposes API endpoints for programmatic access. These are used internally by EnConvo and can be accessed by other extensions and workflows.

Key Endpoints

EndpointPurpose
Create Knowledge BaseCreate a new knowledge base with specified embedding model
Delete Knowledge BaseRemove a knowledge base and all its data
Add ContentIngest files, text, URLs, or media into a knowledge base
Search / RetrievePerform semantic search against a knowledge base
List Knowledge BasesList all available knowledge bases
List AttachmentsList all documents in a knowledge base
Delete AttachmentRemove a specific document from a knowledge base
SummarizeGenerate an AI summary of knowledge base content

Using in Workflows

Knowledge base operations can be used as steps in workflows:
Trigger: New file in ~/Documents/research/
  → Add to Knowledge Base "research"
  → Search for related content
  → Generate summary
  → Save summary to notes

Advanced Configuration

Custom Chunk Sizes

While the default 6,000-character chunk size works well for most content, specific use cases may benefit from adjustments:
Content TypeRecommended Chunk SizeReason
Short Q&A pairs1,000-2,000Each pair should be a single chunk
Technical docs4,000-6,000Balance detail with context
Legal documents6,000-8,000Preserve clause context
Code files2,000-4,000Function-level granularity

Monitoring and Maintenance

  • Re-index: If search quality degrades after many incremental updates, re-index the knowledge base to rebuild indexes
  • Embedding model upgrades: When better models become available, create a new knowledge base with the new model and re-ingest your content
  • Storage cleanup: Delete knowledge bases you no longer need to reclaim disk space

Troubleshooting

Try these steps in order:
  1. Check that the embedding model is appropriate for your content language
  2. Re-index the knowledge base to rebuild search indexes
  3. Consider enabling reranking for better result ordering
  4. If content is very domain-specific, try a more capable embedding model
Large documents take longer to process. To improve speed:
  • Use a cloud embedding provider for batch processing
  • Ensure your Mac has sufficient RAM (embedding models are memory-intensive)
  • For local models, check that your Mac supports Metal acceleration
If a file type is not directly supported, try converting it to a supported format (PDF, TXT, or MD) before adding it to the knowledge base.
Knowledge bases are identified by composite keys (dbName|tableName). Ensure you are referencing the correct name. Check Settings -> Knowledge Base for the list of available knowledge bases.

Knowledge Base Basics

Getting started with knowledge bases

AI Chat

Chat with your knowledge base

Workflows

Automate knowledge base tasks

Providers

Configure embedding and reranking providers