Skip to content

Commit f35f648

Browse files
authored
feat: add Pinecone cli support (#717)
* feat: add Pinecone cli support * fix: replace deprecated search method * chore: format cli.py
1 parent e4e9941 commit f35f648

5 files changed

Lines changed: 63 additions & 5 deletions

File tree

install/requirements_py3.11.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
grpcio==1.53.2
22
grpcio-tools==1.53.0
33
qdrant-client
4-
pinecone-client
4+
pinecone
55
weaviate-client
66
elasticsearch==8.16.0
77
pgvector

pyproject.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ all = [
5757
"grpcio==1.53.0", # for qdrant-client and pymilvus
5858
"grpcio-tools==1.53.0", # for qdrant-client and pymilvus
5959
"qdrant-client",
60-
"pinecone-client",
60+
"pinecone",
6161
"weaviate-client",
6262
"elasticsearch",
6363
"sqlalchemy",
@@ -83,7 +83,7 @@ all = [
8383
]
8484

8585
qdrant = [ "qdrant-client" ]
86-
pinecone = [ "pinecone-client" ]
86+
pinecone = [ "pinecone" ]
8787
weaviate = [ "weaviate-client" ]
8888
elastic = [ "elasticsearch" ]
8989
# For elastic and aliyun_elasticsearch
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
from typing import Annotated, TypedDict, Unpack
2+
3+
import click
4+
from pydantic import SecretStr
5+
6+
from ....cli.cli import (
7+
CommonTypedDict,
8+
cli,
9+
click_parameter_decorators_from_typed_dict,
10+
run,
11+
)
12+
from .. import DB
13+
from ..api import EmptyDBCaseConfig
14+
15+
16+
class PineconeTypedDict(TypedDict):
17+
api_key: Annotated[
18+
str,
19+
click.option("--api-key", type=str, help="Pinecone API key", required=True),
20+
]
21+
index_name: Annotated[
22+
str,
23+
click.option("--index-name", type=str, help="Pinecone index name", required=True),
24+
]
25+
version: Annotated[
26+
str,
27+
click.option("--version", type=str, help="Database version", default="", show_default=True),
28+
]
29+
note: Annotated[
30+
str,
31+
click.option("--note", type=str, help="Additional notes", default="", show_default=True),
32+
]
33+
34+
35+
class PineconeIndexTypedDict(CommonTypedDict, PineconeTypedDict): ...
36+
37+
38+
@cli.command()
39+
@click_parameter_decorators_from_typed_dict(PineconeIndexTypedDict)
40+
def Pinecone(**parameters: Unpack[PineconeIndexTypedDict]):
41+
from .config import PineconeConfig
42+
43+
run(
44+
db=DB.Pinecone,
45+
db_config=PineconeConfig(
46+
db_label=parameters["db_label"],
47+
version=parameters["version"],
48+
note=parameters["note"],
49+
api_key=SecretStr(parameters["api_key"]),
50+
index_name=parameters["index_name"],
51+
),
52+
db_case_config=EmptyDBCaseConfig(),
53+
**parameters,
54+
)

vectordb_bench/backend/clients/qdrant_cloud/qdrant_cloud.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -198,15 +198,17 @@ def search_embedding(
198198
"""
199199
assert self.qdrant_client is not None
200200

201-
res = self.qdrant_client.search(
201+
points_res = self.qdrant_client.query_points(
202202
collection_name=self.collection_name,
203-
query_vector=query,
203+
query=query,
204204
limit=k,
205205
query_filter=self.query_filter,
206206
search_params=self.db_case_config.search_param(),
207207
with_payload=self.db_case_config.with_payload,
208208
)
209209

210+
res = points_res.points
211+
210212
return [r.id for r in res]
211213

212214
def prepare_filter(self, filters: Filter):

vectordb_bench/cli/vectordbbench.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
from ..backend.clients.pgvecto_rs.cli import PgVectoRSHNSW, PgVectoRSIVFFlat
2424
from ..backend.clients.pgvector.cli import PgVectorHNSW
2525
from ..backend.clients.pgvectorscale.cli import PgVectorScaleDiskAnn
26+
from ..backend.clients.pinecone.cli import Pinecone
2627
from ..backend.clients.qdrant_cloud.cli import QdrantCloud
2728
from ..backend.clients.qdrant_local.cli import QdrantLocal
2829
from ..backend.clients.redis.cli import Redis
@@ -76,6 +77,7 @@
7677
cli.add_command(Chroma)
7778
cli.add_command(Zvec)
7879
cli.add_command(Endee)
80+
cli.add_command(Pinecone)
7981

8082

8183
if __name__ == "__main__":

0 commit comments

Comments
 (0)