Releases: pinecone-io/pinecone-java-client
v0.7.1 Release
Added: List Indexes
Introduced the ability to list indexes in a project. It returns a list of string where each string represents an index name.
Example
The following example shows how to list indexes:
PineconeClientConfig configuration = new PineconeClientConfig()
.withApiKey("YOUR_API_KEY")
.withEnvironment("us-east1-gcp");
PineconeIndexOperationClient indexOperationClient = new PineconeIndexOperationClient(configuration);
List<String> indexList = indexOperationClient.listIndexes();Added: Configure index
Introduced the ability to configure the number of replicas or the podType of an existing index.
Note:
- This is not supported by projects on the
gcp-starterenvironment. - Scaling down the pod type is not supported i.e.
p1.x2cannot be changed top1.x1. - Updating the base pod type is not supported i.e.
p1.x1cannot be changed top2.x1.
Example:
The following example shows how to configure indexes:
PineconeClientConfig configuration = new PineconeClientConfig()
.withApiKey("YOUR_API_KEY")
.withEnvironment("us-east1-gcp");
PineconeIndexOperationClient indexOperationClient = new PineconeIndexOperationClient(configuration);
// Increasing the replicas: assuming the number of replicas was set to 1 or 2
ConfigureIndexRequest configureIndexRequest = new ConfigureIndexRequest()
.withReplicas(3);
indexOperationClient.configureIndex(indexName, configureIndexRequest);
// Decreasing the replicas from 3 to 1
configureIndexRequest = new ConfigureIndexRequest()
.withReplicas(1);
indexOperationClient.configureIndex(indexName, configureIndexRequest);
// Change the pod type to a larger one i.e. from p1.x1 to p1.x2
ConfigureIndexRequest configureIndexRequest = new ConfigureIndexRequest()
.withPodType("p1.x2");
indexOperationClient.configureIndex(indexName, configureIndexRequest);Added: Integration tests for control and data plane operations
We have added integration tests for both control (index) and data plane (vector) operations under src/integration/java/io/pinecone/integration which will help provide users with more examples.
What's Changed
- Add support to list indexes by @rohanshah18 in #40
- Add support to configure index by @rohanshah18 in #42
- Add user agent by @rohanshah18 in #43
- Add describeIndexStats integration test by @rohanshah18 in #47
- Add integration test for deleting vectors by @rohanshah18 in #48
- Refactor configure index test by @rohanshah18 in #50
- Add update, fetch, and query integration tests by @rohanshah18 in #51
- Update changelogs, examples, and readme by @rohanshah18 in #52
Full Changelog: v0.6.0...v0.7.1
v0.6.0 Release
Added: Asynchronous Stub
We have added the capability to expose a future stub, providing users with the ability to execute asynchronous gRPC requests. The future stub allows for concurrent requests, enhancing the efficiency of data plane operations.
Example
Below is a simple code example demonstrating how to utilize the future stub for making asynchronous gRPC request:
// Instantiate a Pinecone client configuration with the API key
PineconeClientConfig clientConfig = new PineconeClientConfig().withApiKey("PINECONE_API_KEY");
// Create a Pinecone client and establish a connection
PineconeClient client = new PineconeClient(clientConfig);
PineconeConnection connection = client.connectWithUrl("https://abcdefg-123-c01b9b5.svc.us-east1-gcp.pinecone.io/");
// Retrieve the future stub for asynchronous requests
VectorServiceGrpc.VectorServiceFutureStub futureStub = connection.getFutureStub();
// Prepare a DescribeIndexStatsRequest
DescribeIndexStatsRequest describeIndexStatsRequest = DescribeIndexStatsRequest.newBuilder().build();
// Execute the asynchronous request and handle the response
ListenableFuture<DescribeIndexStatsResponse> describeIndexStatsResponseFuture = futureStub.describeIndexStats(describeIndexStatsRequest);
try {
DescribeIndexStatsResponse response = describeIndexStatsResponseFuture.get();
logger.info("Received describe index stats response: " + response);
} catch (InterruptedException | ExecutionException e) {
logger.error("Failed to retrieve describe index stats: " + e.getMessage());
}Added: Integration tests
We have also added integration tests that will run after every commit to enhance testing capability.
What's Changed
- Setup starter CI job by @jhamon in #33
- Expand CI coverage to Java 17, add integration tests by @jhamon in #34
- Clean up integration tests by @rohanshah18 in #36
- Expose future stub on Pinecone connection by @russcam in #32
- Update changelogs for v0.6.0 release by @rohanshah18 in #38
New Contributors
Full Changelog: v0.5.1...v0.6.0
v0.5.1 Release
Fixed: Dependency Cleanup and Compatibility Enhancement
In this release, we took steps to enhance compatibility and ensure optimal performance by addressing dependency-related concerns:
- Updated the dependency for
netty-tcnative-boringssl-staticto version2.0.61.Final, ensuring compatibility with gRPCv1.58.0. - Removed unnecessary dependencies.
- Updated deprecated gradle method.
These changes effectively resolve the dependency version conflict, contributing to a cleaner and more streamlined dependency structure.
What's Changed
- Update readme for outdated java-basic-mvn example by @rohanshah18 in #30
- Update build.gradle file to fix dependency issues and improve testing by @rohanshah18 in #31
Full Changelog: v0.5.0...v0.5.1
v0.5.0 Release
Updated: gRPC version 1.58.0
In this release, we have upgraded the gRPC version from v1.53.0 to v1.58.0, implementing crucial adjustments. This update ensures that users can seamlessly utilize gRPC v1.58.0 without encountering the method not found errors that were prevalent in the previous version v1.53.0.
Updated: HTTP Client
Upgraded the HTTP client from AsyncHttpClient to OkHttpClient for control plane operations. Users can now make multiple client calls using a synchronous HTTP client, providing a better control and performance.
Added: Index Description
Introduced the ability to describe an index using the indexName parameter, offering more flexibility in index operations.
Example
The following example shows how to utilize OkHttpClient and synchronously call describeIndex and deleteIndex functions using indexName parameter.
// create a custom OkHttpClient
OkHttpClient.Builder builder = new OkHttpClient.Builder()
.connectTimeout(10, java.util.concurrent.TimeUnit.SECONDS)
.readTimeout(30, java.util.concurrent.TimeUnit.SECONDS)
.writeTimeout(30, java.util.concurrent.TimeUnit.SECONDS);
OkHttpClient httpClient = builder.build();
PineconeClientConfig pineconeClientConfig = new PineconeClientConfig()
.withApiKey("PINECONE_API_KEY")
.withEnvironment("TEST_ENVIRONMENT");
// pass the custom OkHttpClient
PineconeIndexOperationClient pineconeIndexOperationClient = new PineconeIndexOperationClient(pineconeClientConfig, httpClient);
// synchronous calls to describe and delete index
pineconeIndexOperationClient.describeIndex("TEST_INDEX_NAME");
pineconeIndexOperationClient.deleteIndex("TEST_INDEX_NAME");
// close the client
pineconeIndexOperationClient.close();Added: Apache 2.0 License
Added Apache 2.0 license, ensuring compliance with licensing standards.
What's Changed
- Update http client and improve error handling by @rohanshah18 in #23
- Add Apache 2.0 LICENSE by @gdj0nes in #25
- Add support for describeIndex functionality by @rohanshah18 in #24
- Update gRPC version to 1.58.0 by @rohanshah18 in #26
New Contributors
Full Changelog: v0.4.0...v0.5.0
Release 0.4.0
Changelog
This change simplifies configuration by allowing a PineconeConnection object to be instantiated from an index url without the need to pass individual configuration fields for indexName, projectId, and environment. This change should make interactions with Pinecone's data plane more robust as there is no longer a need to parse these values out of urls which could change format over time.
Example
The following example shows how to build a PineconeConnection object from the index url. Then we show how to use the connection object to fetch a list of vectors.
PineconeClientConfig clientConfig = new PineconeClientConfig().withApiKey("PINECONE_API_KEY");
PineconeClient client = new PineconeClient(clientConfig);
PineconeConnection connection = client.connectWithUrl("https://abcdefg-123-c01b9b5.svc.us-east1-gcp.pinecone.io/");
List<String> ids = Arrays.asList("v1", "v2", "v3", "v4", "v5", "v6");
FetchRequest fetchRequest = FetchRequest.newBuilder().addAllIds(ids).setNamespace("TEST_NAMESPACE").build();
FetchResponse fetchResponse = connection.getBlockingStub().fetch(fetchRequest);Release 0.3.0
Changelog
We have introduced the following two index operations:
- Creating an index is now possible using the required fields
index_nameanddimension, along with optional fields such asmetric,pods,replicas,pod_type,metadata_config, andsource_collection. - Additionally, you can now delete an index using the
index_nameparameter.
Examples:
- Create Index:
// The following example creates an index without a metadata configuration. By default, Pinecone indexes all metadata.
PineconeClientConfig configuration = new PineconeClientConfig()
.withApiKey("YOUR_API_KEY")
.withEnvironment("us-east1-gcp");
PineconeIndexOperationClient pineconeIndexOperationClient = new PineconeIndexOperationClient(configuration);
CreateIndexRequest createIndexRequest = new CreateIndexRequest()
.withIndexName("example-index")
.withDimension(128);
pineconeIndexOperationClient.createIndex(createIndexRequest);
// The following example creates an index that only indexes the "color" metadata field.
IndexMetadataConfig metadataConfig = new IndexMetadataConfig();
metadataConfig.addIndexedItem("color");
CreateIndexRequest createIndexRequest2 = new CreateIndexRequest()
.withIndexName("example-index-2")
.withDimension(1024)
.withMetadataConfig(metadataConfig);
pineconeIndexOperationClient.createIndex(createIndexRequest2);
- Delete Index:
// The following example deletes an index
PineconeClientConfig configuration = new PineconeClientConfig()
.withApiKey("YOUR_API_KEY")
.withEnvironment("us-east1-gcp");
PineconeIndexOperationClient pineconeIndexOperationClient = new PineconeIndexOperationClient(configuration);
pineconeIndexOperationClient.deleteIndex("example-index");
v0.2.3
v0.2.2
v0.2.1
Version 0.2.0
This is mostly a new client, based on a new ProtoBuf specification of the Pinecone API. This version is not compatible with previous version, but exposes all action available on existing Pinecone indexes.