pinecone 0.2.0 copy "pinecone: ^0.2.0" to clipboard
pinecone: ^0.2.0 copied to clipboard

Unofficial Dart client for Pinecone vector database. For more details on Pinecone, please visit https://docs.pinecone.io/docs/overview.

example/pinecone_example.dart

// ignore_for_file: unused_local_variable
import 'dart:io';
import 'package:pinecone/pinecone.dart';

// Create a client instance with an API key
final client = PineconeClient(
  apiKey: Platform.environment['PINECONE_API_KEY'] ?? '',
  environment: 'us-west1-gcp-free',
);

void main() async {
  // List indexes
  List<String> indexNames = await client.index.listIndexes();

  // List collections
  List<String> collectionNames = await client.index.listCollections();

  // Create a new index
  if (indexNames.isEmpty) {
    final indexNameToCreate = 'my-index';
    await client.index.createIndex(
      body: IndexDefinition(
        name: indexNameToCreate,
        dimension: 1536,
      ),
    );

    // Poll index until it's ready
    bool creating = true;
    while (creating) {
      print("Waiting for index to be created...");
      await Future.delayed(Duration(seconds: 10));
      final index = await client.index.describeIndex(
        indexName: indexNameToCreate,
      );
      creating = index.status.state != IndexState.ready;
    }
  }

  // Get the latest indexes
  indexNames = await client.index.listIndexes();
  print(indexNames);

  // Describe an index
  final indexMeta = await client.index.describeIndex(
    indexName: indexNames.first,
  );
  print(indexMeta.database.toJson());
  print(indexMeta.status.toJson());

  // Create a collection
  if (collectionNames.isEmpty) {
    await client.index.createCollection(
      body: CollectionDefinition(
        name: 'my-collection',
        source: indexNames.first,
      ),
    );
  }

  // Get the latest collections
  collectionNames = await client.index.listCollections();
  print(collectionNames);

  // Describe a collection
  final collection = await client.index.describeCollection(
    collectionName: collectionNames.first,
  );
  print(collection.toJson());

  // Create sample vector data
  final vectorData =
      List.generate(indexMeta.database.dimension, (i) => i.toDouble());

  // Add a vectors to an index and namespace
  final upsertRes = await client.vector(host: indexMeta.status.host).upsert(
        body: UpsertRequest(
          vectors: [
            for (int i = 0; i < 5; i++)
              UpsertVector(
                id: DateTime.now().toString(),
                values: vectorData,
              ),
          ],
          namespace: 'my-namespace',
        ),
      );
  print(upsertRes.toJson());

  // Query the vector database
  final queryRes = await client.vector(host: indexMeta.status.host).query(
        body: QueryRequest(
          topK: 5,
          namespace: 'my-namespace',
          vector: vectorData,
        ),
      );
  print(queryRes.toJson());

  if (queryRes.matches.isNotEmpty) {
    print(queryRes.matches.first.toJson());
  }

  client.endSession();
}
6
likes
0
pub points
78%
popularity

Publisher

verified publishertazatechnology.com

Unofficial Dart client for Pinecone vector database. For more details on Pinecone, please visit https://docs.pinecone.io/docs/overview.

Homepage
Repository (GitHub)
View/report issues

Documentation

Documentation

License

unknown (LICENSE)

Dependencies

dio, json_annotation, retrofit

More

Packages that depend on pinecone