How to process and search internal documents with AI

Upload internal documents to Ragex and search them with natural language queries. The API parses PDFs, DOCX, spreadsheets, and 13 other formats automatically — no custom parsers or vector databases needed.

TL;DR: Upload your internal documents to Ragex, which parses, chunks, embeds, and indexes them automatically. Then search with natural language queries and get ranked results you can feed to any LLM. The API handles 16 file types and starts at $29/mo — no ML infrastructure required.

What makes internal document search different?

Internal documents come in messy formats. Engineering teams have markdown specs and JSON configs. HR has DOCX policy manuals. Finance has XLSX spreadsheets. Legal has scanned PDF contracts. Building a search system that handles all of these formats requires multiple parsers, each with different failure modes.

On top of format diversity, internal documents often need access control. Different teams should only see their own documents. And unlike public web search, there is no pre-built index — you have to build the search infrastructure from scratch.

How does Ragex solve this?

Ragex handles the hard parts: document parsing, text extraction, chunking, embedding, and retrieval. You interact with three concepts:

  • Knowledge bases — logical containers for documents (one per team, project, or use case)
  • Documents — files you upload (16 types supported)
  • Search — natural language queries that return ranked text chunks
from ragex import RagexClient

client = RagexClient(api_key="YOUR_API_KEY")

# Create separate knowledge bases for different teams
eng_kb = client.create_knowledge_base(name="Engineering Docs")
hr_kb = client.create_knowledge_base(name="HR Policies")

# Upload team-specific documents
client.upload_document(eng_kb["id"], "architecture.md")
client.upload_document(eng_kb["id"], "api-spec.pdf")
client.upload_document(hr_kb["id"], "employee-handbook.docx")
client.upload_document(hr_kb["id"], "benefits-summary.xlsx")

Each knowledge base is fully isolated. Searches against the engineering KB never return results from HR documents.

How do you handle access control?

Two approaches work well:

Separate knowledge bases per team or role. Create eng_kb, hr_kb, finance_kb and route search queries to the appropriate one based on the user's role. This is the simplest model and provides strong isolation.

Metadata filtering within a shared knowledge base. Upload all documents to one KB but tag them with access-level metadata. At search time, filter by the user's access level:

results = client.search(
    kb["id"],
    query="What is the PTO policy?",
    filter={"access_level": {"$in": ["all", "hr", user_role]}},
)

Both approaches work with the same search quality — reranking is enabled by default.

What about large document collections?

The API processes documents asynchronously and concurrently. Upload hundreds of files and they all process in parallel. Each document becomes searchable as soon as it reaches ready status — you do not wait for the entire batch.

For collections that change frequently (wiki pages, policy updates, versioned specs), you can replace documents via the API. The updated content is re-parsed and re-indexed automatically. Delete outdated documents and their chunks are removed from search results immediately.

What results do you get back?

Search returns ranked text chunks with relevance scores, source document names, page numbers, and any metadata you attached at upload time. This gives users enough context to verify the answer and locate the source document.

You can pass these chunks directly to an LLM for summarization, question answering, or report generation. The API handles retrieval; you choose how to use the results.

FAQ

Can I search across all knowledge bases at once?

No. Each search query is scoped to a single knowledge base. If you need cross-team search, create a shared knowledge base with metadata filtering for access control. This keeps search fast and lets you control who sees what.

How long does it take to index a large document collection?

A single PDF processes in seconds to minutes depending on page count. For bulk uploads, documents process concurrently. Indexing 100 documents typically takes a few minutes. There is no batch limit — upload as many files as your plan allows.

What file types work best for internal document search?

All 16 supported types work well. PDF and DOCX are most common for internal docs. Markdown and HTML are ideal for technical documentation that is already plain text. XLSX works for structured data like inventory lists or personnel records. Images (PNG, JPG) with text content are OCR-processed and fully searchable.


Last updated: 2026-03-09