File Search is currently in Beta. Features and API specifications may change without prior notice. During the beta period, please avoid uploading sensitive or confidential data. When the service officially launches, data from users who have not agreed to the terms of service may be deleted.
File Search enables you to search across your documents using natural language queries. Upload files, build a vector store, and retrieve relevant information β or get AI-generated answers grounded in your documents using the Responses API.
For AI Coding Assistants
Paste this URL into your agent's context for File Search code generation.
https://console.upstage.ai/docs/capabilities/search/file-search.mdConcepts
Vector Stores
A vector store is a container that holds your indexed documents. When you upload a file to a vector store, the system automatically parses, chunks, and embeds the content so it can be searched.
Each vector store is isolated β files in one vector store are not searchable from another. Vector stores are scoped per user (identified by API key). You can only access vector stores that you created, and other users cannot see or search your data.
File Indexing
When you add a file to a vector store, the system processes it through an asynchronous pipeline:
- Parse β Extract text content from the file (supports images, PDFs, Microsoft Office documents, and more).
- Chunk β Split the extracted text into optimized segments.
- Embed β Generate vector embeddings for each chunk.
- Store β Save the embeddings for search.
File processing is asynchronous. After adding a file, its status starts as in_progress and transitions to completed when indexing finishes, or failed if an error occurs.
Search
Search takes a natural language query, embeds it, and finds the most relevant document chunks in the vector store. Results include the matched text, relevance score, and source file information.
Responses (RAG)
The Responses API combines search with an LLM. It retrieves relevant document chunks, then generates an AI answer grounded in the retrieved context. This is also known as Retrieval-Augmented Generation (RAG).
Quick Start
This guide walks you through creating a vector store, uploading a file, and performing your first search.
Prerequisites
- An Upstage API key (obtain from Upstage Console)
- A file uploaded via the Files API β you'll need the returned
file_idto add it to a vector store
Add a File
To add a file to a vector store, you need a file_id from the Upstage Files API. First upload your file, then add it to the vector store.
Response:
Supported File Types
| Extension | Format |
|---|---|
.pdf | PDF documents |
.docx | Microsoft Word |
.pptx | Microsoft PowerPoint |
.xlsx | Microsoft Excel |
.hwp, .hwpx | Hangul Word Processor |
.md | Markdown |
.txt | Plain text |
.jpeg, .jpg | JPEG images |
.png | PNG images |
.bmp | BMP images |
.tiff, .tif | TIFF images |
.heic | HEIC images |
All file types are processed using document parsing to extract text content before indexing.
Error Handling
All errors follow a consistent format:
Common Errors
| HTTP Status | Type | Cause |
|---|---|---|
| 400 | invalid_request_error | Unsupported file type, missing required fields, or service limit exceeded (code: "max_limit_exceeded"). |
| 401 | β | Missing or invalid API key in the Authorization header. |
| 404 | β | Vector store or file not found. |
| 422 | invalid_request_error | Invalid chunking_strategy (only auto is supported), invalid metadata or attributes (exceeds limits). |
File Batches
File batches allow you to add multiple files to a vector store in a single request. This is useful when you need to index many files at once.
You can check the batch status and list the files in a batch:
To cancel an in-progress batch:
Batch Status and Completion
A batch's status field reflects whether the batch was cancelled, not whether indexing finished. It can be either of:
in_progressβ set on creation. Remainsin_progresseven after every file in the batch reaches a terminal state.cancelledβ set whenPOST .../cancelis called on anin_progressbatch. Already-cancelled batches return as-is (no-op).
To detect when batch indexing is done, poll file_counts rather than status. A batch is functionally complete when file_counts.in_progress reaches 0:
Per-file failures do not change the batch status. They are aggregated into file_counts.failed.
Limitations and Constraints
Service Limits
| Resource | Limit |
|---|---|
| Vector stores per user | 50 |
| Files per vector store | 500 |
| Files per batch | 50 |
These limits are enforced at creation time. Exceeding a limit returns a 400 error with code: "max_limit_exceeded".
Data Constraints
| Constraint | Value |
|---|---|
| Metadata keys per object | 16 |
| Metadata key length | 64 characters |
| Metadata value length | 512 characters |
| Attributes keys per file | 16 |
| Attribute key length | 64 characters |
| Attribute string value length | 512 characters |
max_num_results range | 1-20 (default: 5) |
expires_after.days range | 1-365 |
Pagination limit range | 1-100 (default: 20) |
| Chunking strategy | Only auto is supported |
Embed
Convert text into Solar Embedding vectors for search, classification, and clustering, using separate passage and query models and batches of up to 100 texts.
AI Agent Tools
Subscribe to the Upstage Document Intelligence AI Agent on AWS Marketplace β Document Parse and Information Extract in one serverless agent β with account setup steps and pricing.