{"id":19797846,"url":"https://github.com/pinecone-io/pinecone-dotnet-client","last_synced_at":"2025-05-01T03:32:11.325Z","repository":{"id":254909751,"uuid":"822765506","full_name":"pinecone-io/pinecone-dotnet-client","owner":"pinecone-io","description":"The official C# SDK for accessing the Pinecone control plane and data plane.","archived":false,"fork":false,"pushed_at":"2024-11-11T17:57:04.000Z","size":312,"stargazers_count":12,"open_issues_count":1,"forks_count":0,"subscribers_count":6,"default_branch":"main","last_synced_at":"2024-11-11T18:19:00.921Z","etag":null,"topics":["built-with-fern","csharp-client","generated-from-proto","pinecone"],"latest_commit_sha":null,"homepage":"https://docs.pinecone.io/reference/api","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pinecone-io.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-07-01T19:20:33.000Z","updated_at":"2024-11-08T03:25:23.000Z","dependencies_parsed_at":"2024-09-05T16:09:20.099Z","dependency_job_id":null,"html_url":"https://github.com/pinecone-io/pinecone-dotnet-client","commit_stats":null,"previous_names":["pinecone-io/pinecone-dotnet-client"],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pinecone-io%2Fpinecone-dotnet-client","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pinecone-io%2Fpinecone-dotnet-client/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pinecone-io%2Fpinecone-dotnet-client/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pinecone-io%2Fpinecone-dotnet-client/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pinecone-io","download_url":"https://codeload.github.com/pinecone-io/pinecone-dotnet-client/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":224234205,"owners_count":17277918,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["built-with-fern","csharp-client","generated-from-proto","pinecone"],"created_at":"2024-11-12T07:27:04.140Z","updated_at":"2025-05-01T03:32:11.304Z","avatar_url":"https://github.com/pinecone-io.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Pinecone .NET Library\n\n[![NuGet](https://img.shields.io/nuget/v/Pinecone.Client.svg)](https://www.nuget.org/packages/Pinecone.Client)\n[![fern shield](https://img.shields.io/badge/%F0%9F%8C%BF-SDK%20generated%20by%20Fern-brightgreen)](https://buildwithfern.com/?utm_campaign=pinecone-io/pinecone-dotnet-client\u0026utm_medium=readme\u0026utm_source=github)\n\nThe official Pinecone .NET library supporting .NET Standard, .NET Core, and .NET Framework.\n\n## Requirements\n\nTo use this SDK, ensure that your project is targeting one of the following:\n\n* .NET Standard 2.0+\n* .NET Core 3.0+\n* .NET Framework 4.6.2+\n* .NET 6.0+\n\n## Installation\n\nUsing the .NET Core command-line interface (CLI) tools:\n\n```sh\ndotnet add package Pinecone.Client\n```\n\nUsing the NuGet Command Line Interface (CLI):\n\n```sh\nnuget install Pinecone.Client\n```\n\n## Documentation\n\nAPI reference documentation is available [here](https://docs.pinecone.io/reference/api/introduction).\n\n## Usage\n\nInstantiate the SDK using the `Pinecone` class.\n\n```csharp\nusing Pinecone;\n\nvar pinecone = new PineconeClient(\"PINECONE_API_KEY\")\n```\n\n## Indexes\n\nOperations related to the building and managing of Pinecone indexes are called\n[control plane](https://docs.pinecone.io/reference/api/introduction#control-plane)\noperations.\n\n### Create index\n\nYou can use the .NET SDK to create two types of indexes:\n\n1. [Serverless indexes](https://docs.pinecone.io/guides/indexes/understanding-indexes#serverless-indexes) (recommended\n   for most use cases)\n2. [Pod-based indexes](https://docs.pinecone.io/guides/indexes/understanding-indexes#pod-based-indexes) (recommended for\n   high-throughput use cases).\n\n#### Create a serverless index\n\nThe following is an example of creating a serverless index in the `us-east-1` region of AWS. For more information on\nserverless and regional availability,\nsee [Understanding indexes](https://docs.pinecone.io/guides/indexes/understanding-indexes#serverless-indexes).\n\n```csharp\nusing Pinecone;\n\nvar pinecone = new PineconeClient(\"PINECONE_API_KEY\");\n\nvar index = await pinecone.CreateIndexAsync(new CreateIndexRequest\n{\n    Name = \"example-index\",\n    Dimension = 1538,\n    Metric = CreateIndexRequestMetric.Cosine,\n    Spec = new ServerlessIndexSpec\n    {\n        Serverless = new ServerlessSpec\n        {\n            Cloud = ServerlessSpecCloud.Azure,\n            Region = \"eastus2\",\n        }\n    },\n    DeletionProtection = DeletionProtection.Enabled\n});\n```\n\n#### Create a pod-based index\n\nThe following is a minimal example of creating a pod-based index.\n\n```csharp\nusing Pinecone;\n\nvar pinecone = new PineconeClient(\"PINECONE_API_KEY\");\n\nvar index = await pinecone.CreateIndexAsync(new CreateIndexRequest\n{\n    Name = \"example-index\",\n    Dimension = 1538,\n    Metric = CreateIndexRequestMetric.Cosine,\n    Spec = new PodIndexSpec\n    {\n        Pod = new PodSpec\n        {\n            Environment = \"eastus-azure\",\n            PodType = \"p1.x1\",\n            Pods = 1,\n            Replicas = 1,\n            Shards = 1,\n        }\n    },\n    DeletionProtection = DeletionProtection.Enabled\n});\n```\n\n### List indexes\n\nThe following example returns all indexes (and their corresponding metadata) in your project.\n\n```csharp\nusing Pinecone;\n\nvar pinecone = new PineconeClient(\"PINECONE_API_KEY\");\n\nvar indexesInYourProject = await pinecone.ListIndexesAsync();\n```\n\n### Delete an index\n\nThe following example deletes an index by name.\n\n```csharp\nusing Pinecone;\n\nvar pinecone = new PineconeClient(\"PINECONE_API_KEY\");\n\nawait pinecone.DeleteIndexAsync(\"example-index\");\n```\n\n### Describe an index\n\nThe following example returns metadata about an index.\n\n```csharp\nusing Pinecone;\n\nvar pinecone = new PineconeClient(\"PINECONE_API_KEY\");\n\nvar indexModel = await pinecone.DescribeIndexAsync(\"example-index\");\n```\n\n### Scale replicas\n\nThe following example changes the number of replicas for an index.\n\n```csharp\nusing Pinecone;\n\nvar pinecone = new PineconeClient(\"PINECONE_API_KEY\");\n\nvar indexMetadata = await pinecone.ConfigureIndexAsync(\"example-index\", new ConfigureIndexRequest\n{\n    Spec = new ConfigureIndexRequestSpec\n    {\n        Pod = new ConfigureIndexRequestSpecPod\n        {\n            Replicas = 2,\n            PodType = \"p1.x1\",\n        }\n    }\n});\n```\n\n\u003e Note that scaling replicas is only applicable to pod-based indexes.\n\n### Describe index statistics\n\nThe following example returns statistics about an index.\n\n```csharp\nusing Pinecone;\n\nvar pinecone = new PineconeClient(\"PINECONE_API_KEY\");\n\nvar index = pinecone.Index(\"example-index\");\nvar indexStatsResponse = await index.DescribeIndexStatsAsync(new DescribeIndexStatsRequest());\n```\n\n### Upsert vectors\n\nOperations related to the indexing, deleting, and querying of vectors are called\n[data plane](https://docs.pinecone.io/reference/api/introduction#data-plane) operations.\n\nThe following example upserts vectors to `example-index`.\n\n```csharp\nusing Pinecone;\n\nvar pinecone = new PineconeClient(\"PINECONE_API_KEY\");\n\nvar index = pinecone.Index(\"example-index\");\n\nvar upsertIds = new[] { \"v1\", \"v2\", \"v3\" };\n\nfloat[][] values =\n[\n    [1.0f, 2.0f, 3.0f],\n    [4.0f, 5.0f, 6.0f],\n    [7.0f, 8.0f, 9.0f]\n];\n\nuint[][] sparseIndices =\n[\n    [1, 2, 3],\n    [4, 5, 6],\n    [7, 8, 9]\n];\n\nfloat[][] sparseValues =\n[\n    [1000f, 2000f, 3000f],\n    [4000f, 5000f, 6000f],\n    [7000f, 8000f, 9000f]\n];\n\nvar metadataStructArray = new[]\n{\n    new Metadata { [\"genre\"] = \"action\", [\"year\"] = 2019 },\n    new Metadata { [\"genre\"] = \"thriller\", [\"year\"] = 2020 },\n    new Metadata { [\"genre\"] = \"comedy\", [\"year\"] = 2021 },\n};\n\nvar vectors = new List\u003cVector\u003e();\nfor (var i = 0; i \u003c= 2; i++)\n{\n    vectors.Add(\n        new Vector\n        {\n            Id = upsertIds[i],\n            Values = values[i],\n            SparseValues = new SparseValues\n            {\n                Indices = sparseIndices[i],\n                Values = sparseValues[i],\n            },\n            Metadata = metadataStructArray[i],\n        }\n    );\n}\n\nvar upsertResponse = await index.UpsertAsync(new UpsertRequest { Vectors = vectors });\n```\n\n### Query an index\n\nThe following example queries the index `example-index` with metadata filtering.\n\n```csharp\nusing Pinecone;\n\nvar pinecone = new PineconeClient(\"PINECONE_API_KEY\");\n\nvar index = pinecone.Index(\"example-index\");\n\nvar queryResponse = await index.QueryAsync(\n    new QueryRequest\n    {\n        Namespace = \"example-namespace\",\n        Vector = new[] {0.1f, 0.2f, 0.3f, 0.4f},\n        TopK = 10,\n        IncludeValues = true,\n        IncludeMetadata = true,\n        Filter = new Metadata\n        {\n            [\"genre\"] = new Metadata\n            {\n                [\"$in\"] = new[] { \"comedy\", \"documentary\", \"drama\" },\n            }\n        }\n    });\n```\n\n### Query sparse-dense vectors\n\nThe following example queries an index using a sparse-dense vector:\n\n```csharp\nusing Pinecone;\n\nvar pinecone = new PineconeClient(\"PINECONE_API_KEY\");\n\nvar index = pinecone.Index(\"example-index\");\n\nvar queryResponse = await index.QueryAsync(\n    new QueryRequest\n    {\n        TopK = 10,\n        Vector = new[] {0.1f, 0.2f, 0.3f},\n        SparseVector = new SparseValues\n        {\n            Indices = [10, 45, 16],\n            Values = new[] {0.5f, 0.5f, 0.2f},\n        }\n    }\n);\n```\n\n### Delete vectors\n\nThe following example deletes vectors by ID.\n\n```csharp\nusing Pinecone;\n\nvar pinecone = new PineconeClient(\"PINECONE_API_KEY\");\n\nvar index = pinecone.Index(\"example-index\");\n\nvar deleteResponse = await index.DeleteAsync(new DeleteRequest\n{\n    Ids = [\"v1\"],\n    Namespace = \"example-namespace\",\n});\n```\n\nThe following example deletes all records in a namespace and the namespace itself:\n\n```csharp\nusing Pinecone;\n\nvar pinecone = new PineconeClient(\"PINECONE_API_KEY\");\n\nvar index = pinecone.Index(\"example-index\");\n\nvar deleteResponse = await index.DeleteAsync(new DeleteRequest\n{\n    DeleteAll = true,\n    Namespace = \"example-namespace\",\n});\n```\n\n### Fetch vectors\n\nThe following example fetches vectors by ID.\n\n```csharp\nusing Pinecone;\n\nvar pinecone = new PineconeClient(\"PINECONE_API_KEY\");\n\nvar index = pinecone.Index(\"example-index\");\n\nvar fetchResponse = await index.FetchAsync(new FetchRequest\n{\n    Ids = [\"v1\"],\n    Namespace = \"example-namespace\",\n});\n```\n\n### List vector IDs\n\nThe following example lists up to 100 vector IDs from a Pinecone index.\n\nThe following demonstrates how to use the list endpoint to get vector\nIDs from a specific namespace, filtered by a given prefix.\n\n```csharp\nusing Pinecone;\n\nvar pinecone = new PineconeClient(\"PINECONE_API_KEY\");\n\nvar index = pinecone.Index(\"example-index\");\n\nvar listResponse = await index.ListAsync(new ListRequest\n{\n    Namespace = \"example-namespace\",\n    Prefix = \"prefix-\",\n});\n```\n\n### Update vectors\n\nThe following example updates vectors by ID.\n\n```csharp\nusing Pinecone;\n\nvar pinecone = new PineconeClient(\"PINECONE_API_KEY\");\n\nvar index = pinecone.Index(\"example-index\");\n\nvar updateResponse = await index.UpdateAsync(new UpdateRequest\n{\n    Id = \"vec1\",\n    Values = new[] { 0.1f, 0.2f, 0.3f, 0.4f },\n    SetMetadata = new Metadata { [\"genre\"] = \"drama\" },\n    Namespace = \"example-namespace\",\n});\n```\n\n## Collections\n\nCollections fall under data plane operations.\n\n### Create a collection\n\nThe following creates a collection.\n\n```csharp\nusing Pinecone;\n\nvar pinecone = new PineconeClient(\"PINECONE_API_KEY\");\n\nvar collectionModel = await pinecone.CreateCollectionAsync(new CreateCollectionRequest\n{\n    Name = \"example-collection\",\n    Source = \"example-index\",\n});\n```\n\n### List collections\n\nThe following example returns a list of the collections in the current project.\n\n```csharp\nusing Pinecone;\n\nvar pinecone = new PineconeClient(\"PINECONE_API_KEY\");\n\nvar collectionList = await pinecone.ListCollectionsAsync();\n```\n\n### Describe a collection\n\nThe following example returns a description of the collection.\n\n```csharp\nusing Pinecone;\n\nvar pinecone = new PineconeClient(\"PINECONE_API_KEY\");\n\nvar collectionModel = await pinecone.DescribeCollectionAsync(\"example-collection\");\n```\n\n### Delete a collection\n\nThe following example deletes the collection `example-collection`.\n\n```csharp\nusing Pinecone;\n\nvar pinecone = new PineconeClient(\"PINECONE_API_KEY\");\n\nawait pinecone.DeleteCollectionAsync(\"example-collection\");\n```\n\n## Inference\n\n### Embed\n\nThe Pinecone SDK now supports creating embeddings via the [Inference API](https://docs.pinecone.io/guides/inference/understanding-inference).\n\n```csharp\nusing Pinecone;\n\nvar pinecone = new PineconeClient(\"PINECONE_API_KEY\");\n\n// Prepare input sentences to be embedded\nList\u003cEmbedRequestInputsItem\u003e inputs =\n[\n    new() { Text = \"The quick brown fox jumps over the lazy dog.\" },\n    new() { Text = \"Lorem ipsum\" }\n];\n\n// Specify the embedding model and parameters\nvar embeddingModel = \"multilingual-e5-large\";\n\n// Generate embeddings for the input data\nvar embeddings = await pinecone.Inference.EmbedAsync(new EmbedRequest\n{\n    Model = embeddingModel,\n    Inputs = inputs,\n    Parameters = new Dictionary\u003cstring, object?\u003e\n    {\n        [\"input_type\"] = \"query\",\n        [\"truncate\"] = \"END\"\n    }\n});\n\n// Get embedded data\nvar embeddedData = embeddings.Data;\n```\n\nThere are two different types of embeddings generated depending on the model that you use:\n* Dense: represented by the `DenseEmbedding` class\n* Sparse: represented by the `SparseEmbedding` class\n\nYou can check the type of embedding using the `VectorType` property or using the `IsDense` and `IsSparse` properties.\nOnce you know the type of the embedding, you can get the appropriate type using the `AsDense()` and `AsSparse()` methods.\n\n```csharp\nvar embedding = embeddedData.First();\nif (embedding.VectorType == VectorType.Dense)\n{\n    var denseEmbedding = embedding.AsDense();\n    // Use dense embedding\n}\nelse if (embedding.VectorType == VectorType.Sparse)\n{\n    var sparseEmbedding = embedding.AsSparse();\n    // Use sparse embedding\n}\n```\n\n### Rerank\n\nThe following example shows how to rerank items according to their relevance to a query.\n\n```csharp\nusing Pinecone;\n\nvar pinecone = new PineconeClient(\"PINECONE_API_KEY\");\n\n// The model to use for reranking\nvar model = \"bge-reranker-v2-m3\";\n\n// The query to rerank documents against\nvar query = \"The tech company Apple is known for its innovative products like the iPhone.\";\n\n// Add the documents to rerank\nvar documents = new List\u003cDictionary\u003cstring, object\u003e\u003e\n{\n    new() { [\"id\"] = \"vec1\", [\"my_field\"] = \"Apple is a popular fruit known for its sweetness and crisp texture.\" },\n    new() { [\"id\"] = \"vec2\", [\"my_field\"] = \"Many people enjoy eating apples as a healthy snack.\" },\n    new() { [\"id\"] = \"vec3\", [\"my_field\"] = \"Apple Inc. has revolutionized the tech industry with its sleek designs and user-friendly interfaces.\" },\n    new() { [\"id\"] = \"vec4\", [\"my_field\"] = \"An apple a day keeps the doctor away, as the saying goes.\" }\n};\n\n// The fields to rank the documents by. If not provided, the default is \"text\"\nvar rankFields = new List\u003cstring\u003e { \"my_field\" };\n\n// The number of results to return sorted by relevance. Defaults to the number of inputs\nvar topN = 2;\n\n// Whether to return the documents in the response\nvar returnDocuments = true;\n\n// Additional model-specific parameters for the reranker\nvar parameters = new Dictionary\u003cstring, object\u003e\n{\n    [\"truncate\"] = \"END\"\n};\n\n// Send ranking request\nvar result = await pinecone.Inference.RerankAsync(new RerankRequest\n{\n    Model = model,\n    Query = query,\n    Documents = documents,\n    RankFields = rankFields,\n    TopN = topN,\n    Parameters = parameters\n});\n\n// Get ranked data\nvar data = result.Data;\n```\n\n\n## Imports\n### Start an import\n\nThe following example initiates an asynchronous import of vectors from object storage into the index.\n\n```csharp\nusing Pinecone;\n\nvar pinecone = new PineconeClient(\"PINECONE_API_KEY\");\nvar index = pinecone.Index(\"PINECONE_INDEX_NAME\");\n\nvar uri = \"s3://path/to/file.parquet\";\n\nvar response = await index.StartBulkImportAsync(new StartImportRequest\n{\n    Uri = uri,\n    IntegrationId = \"123-456-789\",\n    ErrorMode = new ImportErrorMode { OnError = ImportErrorModeOnError.Continue }\n});\n```\n\n### List imports\n\nThe following example lists all recent and ongoing import operations for the specified index.\n\n```csharp\nusing Pinecone;\n\nvar pinecone = new PineconeClient(\"PINECONE_API_KEY\");\n\nvar index = pinecone.Index(\"PINECONE_INDEX_NAME\");\n\nvar imports = await index.ListBulkImportsAsync(new ListBulkImportsRequest\n{\n    Limit = 100,\n    PaginationToken = \"some-pagination-token\"\n});\n```\n\n### Describe an import\n\nThe following example retrieves detailed information about a specific import operation using its unique identifier.\n\n```csharp\nusing Pinecone;\n\nvar pinecone = new PineconeClient(\"PINECONE_API_KEY\");\n\nvar index = pinecone.Index(\"PINECONE_INDEX_NAME\");\n\nvar importDetails = await index.DescribeBulkImportAsync(\"1\");\n```\n\n### Cancel an import\n\nThe following example attempts to cancel an ongoing import operation using its unique identifier.\n\n```csharp\nusing Pinecone;\n\nvar pinecone = new PineconeClient(\"PINECONE_API_KEY\");\n\nvar index = pinecone.Index(\"PINECONE_INDEX_NAME\");\n\nvar cancelResponse = await index.CancelBulkImportAsync(\"2\");\n```\n\n## Advanced\n\n### Control Plane Client Options\n\nControl Plane endpoints are accessed via standard HTTP requests. You can configure the following HTTP client options:\n\n- **MaxRetries**: The maximum number of times the client will retry a failed request. Default is `2`.\n- **Timeout**: The time limit for each request before it times out. Default is `30 seconds`.\n- **BaseUrl**: The base URL for all requests.\n- **HttpClient**: The HTTP client to be used for all requests.\n- **IsTlsEnabled**: The client will default to using HTTPS if `true`, and to HTTP if `false`. Default is `true`.\n\nExample usage:\n\n```csharp\nvar pinecone = new PineconeClient(\"PINECONE_API_KEY\", new ClientOptions\n{\n    MaxRetries = 3,\n    Timeout = TimeSpan.FromSeconds(60),\n    HttpClient = ..., // Override the Http Client\n    BaseUrl = ..., // Override the Base URL\n    IsTlsEnabled = true\n});\n```\n\n#### Configuring HTTP proxy for both control and data plane operations\n\nIf your network setup requires you to interact with Pinecone via a proxy, you need to configure the HTTP client accordingly.\n\n```csharp\nusing System.Net;\nusing Pinecone;\n\nvar pinecone = new PineconeClient(\"PINECONE_API_KEY\", new ClientOptions\n{\n    HttpClient = new HttpClient(new HttpClientHandler\n    {\n        Proxy = new WebProxy(\"PROXY_HOST:PROXY_PORT\")\n    })\n});\n```\n\nIf you're building your HTTP client using the [HTTP client factory](https://learn.microsoft.com/en-us/dotnet/core/extensions/httpclient-factory#configure-the-httpmessagehandler), you can use the `ConfigurePrimaryHttpMessageHandler` method to configure the proxy.\n\n```csharp\n   .ConfigurePrimaryHttpMessageHandler(() =\u003e new HttpClientHandler\n       {\n           Proxy = new WebProxy(\"PROXY_HOST:PROXY_PORT\")\n       });\n```\n\n### Data Plane gRPC Options\n\nData Plane endpoints are accessed via gRPC. You can configure the Pinecone client with gRPC channel options for advanced\ncontrol over gRPC communication settings. These options allow you to customize various aspects like message size limits,\nretry attempts, credentials, and more.\n\nExample usage:\n\n```csharp\nvar pinecone = new PineconeClient(\"PINECONE_API_KEY\", new ClientOptions\n{\n    GrpcOptions = new GrpcChannelOptions\n    {\n        MaxRetryAttempts = 5,\n        MaxReceiveMessageSize = 4 * 1024 * 1024 // 4 MB\n        // Additional configuration options...\n    }\n});\n```\n\n### Exception handling\n\nWhen the API returns a non-zero status code, (4xx or 5xx response), a subclass of\n`PineconeException` will be thrown:\n\n```csharp\ntry {\n    pinecone.CreateIndexAsync(...);\n} catch (PineconeException e) {\n    Console.WriteLine(e.Message)\n}\n```\n\n## Contributing\n\nWhile we value open-source contributions to this SDK, this library\nis generated programmatically. Additions made directly to this library\nwould have to be moved over to our generation code, otherwise they would\nbe overwritten upon the next generated release. Feel free to open a PR as a\nproof of concept, but know that we will not be able to Pinecone it as-is.\nWe suggest opening an issue first to discuss with us!\n\nOn the other hand, contributions to the README are always very welcome!\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpinecone-io%2Fpinecone-dotnet-client","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpinecone-io%2Fpinecone-dotnet-client","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpinecone-io%2Fpinecone-dotnet-client/lists"}