string field’s text for you. Add an embed (dense) or sparse_embed (learned-sparse) object to the field, and Pinecone embeds the text when you upsert or update a document, and embeds the query text when you search that field. You send and search with plain text and never handle vectors.
This is the same integrated embedding that the Create an index with integrated embedding operation provides for the legacy Records API, brought to document indexes, where it composes with full-text search on the same field.
Integrated embedding requires API version 2026-07. Send X-Pinecone-Api-Version: 2026-07 on REST requests, or use an SDK that supports it: Python 10.1.0 or later, Node.js 9.1.0 or later, or Go 7.1.0 or later.
Bring Your Own Cloud (BYOC) indexes can’t declare
embed or sparse_embed.Declare an embedded field
Addembed, sparse_embed, or both to a string field, inside schema.fields in the create-index request. Every key inside them is optional: an empty {} uses the platform default model at its default dimension and metric. Pinecone resolves and fixes the model, dimension, and metric at creation, and returns them when you describe the index.
embedtakes a hosted dense model (defaultllama-text-embed-v2) and optionaldimension,metric, andwrite_parameters/read_parameters(model parameters applied when embedding on write and on query, such astruncate).sparse_embedtakes a hosted sparse model (defaultpinecone-sparse-english-v0) and optionalwrite_parameters/read_parameters. Sparse embeddings have no dimension or metric.- An
embedfield uses the index’s single dense slot, and asparse_embedfield uses its single sparse slot. So an index has at most one of each, and an embedded field can’t coexist with adense_vectororsparse_vectorfield of the same type (dense or sparse).
embed or sparse_embed on an existing index.
Text storage and full-text search
By default (store_text: true), Pinecone stores the field’s text and returns it via include_fields. It also indexes the text for full-text search, so a string field with embed is BM25-searchable unless you opt out.
Set store_text: false to embed the text without storing it. A field with store_text: false:
- can’t declare
full_text_search. - can’t be scored with
textorquery_string, or matched with$match_phrase,$match_all, or$match_any. - still supports
embedandsparse_embedscoring. - returns a
400if named ininclude_fieldson search or fetch.["*"]leaves it out.
All three aspects
Limits
- A document and a single request are each limited to 2 MB. On an index that embeds text, that request limit also counts the vectors Pinecone derives from the text.
- An embedded value can be up to 100 KB, whether or not the text is stored. A stored value is also limited to 10,000 tokens after tokenization.
- Each model embeds only its first N tokens (507 for
multilingual-e5-large, 2,048 forllama-text-embed-v2, 512 by default forpinecone-sparse-english-v0). Longer values are truncated by default. For a denseembedfield, settingtruncate: NONErejects an over-length value with a400instead. The full value is still stored and returned whenstore_textistrue.
Upsert and search embedded fields
Upsert
Upsert documents with plain text on the embedded field. You don’t supply vectors, and Pinecone embeds the text on write. A few rules apply:- When the schema declares
embedorsparse_embed, each upsert or by-ID update is embedded in one call, so it’s capped at 96 documents instead of 1,000, even when a request sets only metadata. - A dense
embedfield must appear in every document. Omitting it, or removing it in an update, is rejected with a400. Asparse_embed-only field is optional, so you can omit or remove it. - A vector or an empty string on an embedded field is rejected with a
400. - Update is a partial patch, so a field you don’t set is left unchanged. A by-filter update can’t set an embedded field; patch it by document ID.
- An upsert or update that embeds text reports the tokens it consumed as
usage.embed_total_tokens.
You can’t bulk import into an index with an
embed or sparse_embed field. Add text through upsert or update instead.Search
To search, pick theembed or sparse_embed scoring method and pass query text. Pinecone embeds the query with the field’s frozen model and ranks by similarity.
include_fields. The vectors it derives from your text are internal and aren’t returned. The search response reports the query’s embedding usage as usage.embed_total_tokens. A sparse_embed query is embedded in-process, so it reports 0.
An embed or sparse_embed clause must be the only clause in score_by. You can still combine signals, because a stored embedded field is also full-text-searchable. Rank with an embed score_by, then narrow the results with a $match_phrase, $match_all, or $match_any filter on the same field (see Full-text search). To fuse two full rankings instead, run separate searches and merge them with reciprocal rank fusion.