Release v3.0.0
- Existing users will want to checkout the v3.0.0 Migration Guide for a walkthrough of all the new features and changes.
- New users should start with the README and Reference Docs
Serverless indexes are currently in public preview, so make sure to review the current limitations and test thoroughly before using in production.
Changes overview
- Deploy Pinecone’s new serverless indexes. The
create_index
method has been refactored to accept aPodSpec
orServerlessSpec
depending on how you would like to deploy your index. Many old properties such aspod_type
,replicas
, etc are moved intoPodSpec
since they do not apply to serverless indexes. - Understand cost. The quantity of read units consumed by each serverless
query
andfetch
call are now returned with the response. - Flexible API Keys. The v3.0.0 Python SDK is consuming the new Control Plane API hosted at
https://api.pinecone.io/
. This new API allows for a lot more flexibility in how API keys are used in comparison to the past when a rigid 1:1 relationship was enforced between projects and environments. - State encapsulation with classes. We’ve refactored away from global state variables set with
pinecone.init
into newPinecone
class instances that encapsulate their configuration state. This change enables users to interact with Pinecone using multiple API keys if they wish. - Streamlined dependencies, smoother installs.
- Removed many dependencies:
numpy
,pyyaml
,loguru
,requests
,dnspython
- Expanded the
urllib3
support back to1.26.x
- Everything GRPC-related is now moved into a subpackage,
pinecone.grpc
, so that GRPC code is only imported when needed. For applications using REST, this will mean quicker startup and fewer dependency clashes with other packages.
- Removed many dependencies:
- Richer responses. The
list_indexes
andlist_collections
methods now return an array with full descriptions of each resource, not merely an array of names. - Migration to the Apache 2 open source license. We’ve moved from a proprietary EULA to a more welcoming Apache 2 license to make it easier than ever for people to incorporate the Pinecone Python SDK into their projects.
- Bug fixes:
- Removed code that was erroneously parsing some metadata into
DateTime
objects. - Refactored
urllib3
usage to stop spamming deprecation warning messages. - Suppressed a
tqdm
warning that was appearing during notebook runs.
- Removed code that was erroneously parsing some metadata into
- Tidying up / Breaking changes
list_indexes
now returns additional data, and to continue iterating over an array of names you need to chain a call to a new helper method.names()
. See here.list_collections
has changed very similar to list_indexes. Use.names()
. See here.describe_index
takes the same arguments as before (the index name), but returns data in a different shape reflecting the move of some configurations under thespec
key and elevation ofhost
to the top level. See a table of changed properties here.- The order of positional arguments to the
query
method has been updated to reflect thattop_k
is a required parameter. If you previously relied on passing your query vector as the first positional argument, you’ll see a strange error from the API about duplicatetop_k
values being passed. We recommend adopting keyword arguments to fix and be resilient to any future changes, e.g.index.query(vector=vec, top_k=10)
query()
no longer accepts multiple queries via thequeries
keyword argument.
- Debugging tools. See what data is coming and going with a new environment variable,
PINECONE_DEBUG_CURL='true'
New Contributors
- @zackproser migrated the repository onto poetry in #193
- @austin-denoble made numerous documentation and CI contributions, beginning with #208
- @loisaidasam spotted some typos in #254
Full Changelog: v2.2.4...v3.0.0.dev10