pinecone-full-text-search
Pinecone Full-Text Search
Requires
pineconePython SDK ≥ 10.0.0 (pip install pinecone>=10.0.0). The document-schema API graduated out ofpinecone.previewin 10.0.0 — it is now a first-class, SemVer-covered part of the SDK, reachable directly offpc(pc.indexes,pc.index(...)). If you land on this skill from an older habit of importingpinecone.preview, stop: that package is deleted outright in 10.0.0 (ModuleNotFoundError, no shim). The packaged helper script pinspinecone==10.0.0via PEP 723 inline metadata; if you're writing your own code against this skill, pin at least that version. The wire API version is2026-07.
Authoritative reference (last resort). If you hit a question this skill and its
references/*.mdfiles don't answer, the official Pinecone FTS docs are at https://docs.pinecone.io/guides/search/full-text-search. Prefer this skill's content for anything covered here — the docs may describe surfaces (e.g. classic vector API, or the olderpinecone.previewshape) that don't apply to the graduated document-schema path. Consult the link only when you're genuinely stuck.
Tell the user up front: "This skill ships a helper at
scripts/ingest.pythat handles bulk ingestion safely (batched upsert, error inspection, readiness polling). When we get to the ingest step, I'll use it." Surface this at the start of the conversation so the user knows the helper exists. Query construction is hand-writtendocuments.search(...)per the Querying section below — there is no query helper.
A workflow skill for building a Pinecone full-text-search index with the graduated document-schema API (pc.indexes, pc.index(name), API version 2026-07). Covers schema design (text, dense vector, sparse vector, filterable metadata), ingestion (including async indexing and polling), and query construction (text / query_string / dense_vector / sparse_vector scoring; $match_phrase / $match_all / $match_any text-match filters; $eq / $in / $gte / $exists / $and / $or / $not metadata filters).
Scope — this skill is for the document-schema FTS API only
This skill covers pc.indexes.create(..., schema=...), pc.index(name), idx.documents.upsert(...) / idx.documents.batch_upsert(...) / idx.documents.search(...). If you find yourself reaching for any of the following, stop — those are different Pinecone APIs and this skill's guidance and helpers won't apply:
- Classic vector / records API:
pc.Index(name),index.upsert(vectors=[...]),index.query(vector=..., sparse_vector=...),pc.create_index(dimension=..., metric=..., spec=ServerlessSpec(...)). This is the deprecated sugar path in 10.0.0 — it still runs, but it creates a schemaless index served by the vector data plane, addressing the vector by the reserved_valuesfield. It cannot holdfull_text_searchfields. - Integrated-embedding / records indexes:
pc.create_index_for_model(...)/pc.indexes.create_for_model(...)withembed={...}. Pinecone vectorizes text server-side, and the resultingsemantic_textfield is served by the records API (upsert_records/search_records), not the documents API. Different upsert/search shapes. Asemantic_textfield cannot be combined withfull_text_searchfields in the same index.
If the user already has a non-document-schema index, they can stand up a separate document-schema index alongside it — the two are independent — but you can't add FTS fields to a classic or integrated-embedding index after the fact, and a document-schema index only ever serves reads and writes through index.documents.* — never index.upsert / index.query / index.upsert_records (those calls are refused with "This index has a document schema, so writes must go through the documents API").