mirror of
https://github.com/hwchase17/langchain.git
synced 2025-09-01 19:12:42 +00:00
community[patch]: pinecone v3 support (#15849)
Info in slack --------- Co-authored-by: Roie Schwaber-Cohen <roie.cohen@gmail.com>
This commit is contained in:
@@ -4,16 +4,7 @@ import logging
|
|||||||
import os
|
import os
|
||||||
import uuid
|
import uuid
|
||||||
import warnings
|
import warnings
|
||||||
from typing import (
|
from typing import TYPE_CHECKING, Any, Callable, Iterable, List, Optional, Tuple, Union
|
||||||
TYPE_CHECKING,
|
|
||||||
Any,
|
|
||||||
Callable,
|
|
||||||
Iterable,
|
|
||||||
List,
|
|
||||||
Optional,
|
|
||||||
Tuple,
|
|
||||||
Union,
|
|
||||||
)
|
|
||||||
|
|
||||||
import numpy as np
|
import numpy as np
|
||||||
from langchain_core.documents import Document
|
from langchain_core.documents import Document
|
||||||
@@ -33,6 +24,26 @@ if TYPE_CHECKING:
|
|||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
|
def _import_pinecone() -> Any:
|
||||||
|
try:
|
||||||
|
import pinecone
|
||||||
|
except ImportError as e:
|
||||||
|
raise ImportError(
|
||||||
|
"Could not import pinecone python package. "
|
||||||
|
"Please install it with `pip install pinecone-client`."
|
||||||
|
) from e
|
||||||
|
return pinecone
|
||||||
|
|
||||||
|
|
||||||
|
def _is_pinecone_v3() -> bool:
|
||||||
|
pinecone = _import_pinecone()
|
||||||
|
pinecone_client_version = pinecone.__version__
|
||||||
|
if version.parse(pinecone_client_version) >= version.parse("3.0.0.dev"):
|
||||||
|
return True
|
||||||
|
else:
|
||||||
|
return False
|
||||||
|
|
||||||
|
|
||||||
class Pinecone(VectorStore):
|
class Pinecone(VectorStore):
|
||||||
"""`Pinecone` vector store.
|
"""`Pinecone` vector store.
|
||||||
|
|
||||||
@@ -62,13 +73,7 @@ class Pinecone(VectorStore):
|
|||||||
distance_strategy: Optional[DistanceStrategy] = DistanceStrategy.COSINE,
|
distance_strategy: Optional[DistanceStrategy] = DistanceStrategy.COSINE,
|
||||||
):
|
):
|
||||||
"""Initialize with Pinecone client."""
|
"""Initialize with Pinecone client."""
|
||||||
try:
|
pinecone = _import_pinecone()
|
||||||
import pinecone
|
|
||||||
except ImportError:
|
|
||||||
raise ImportError(
|
|
||||||
"Could not import pinecone python package. "
|
|
||||||
"Please install it with `pip install pinecone-client`."
|
|
||||||
)
|
|
||||||
if not isinstance(embedding, Embeddings):
|
if not isinstance(embedding, Embeddings):
|
||||||
warnings.warn(
|
warnings.warn(
|
||||||
"Passing in `embedding` as a Callable is deprecated. Please pass in an"
|
"Passing in `embedding` as a Callable is deprecated. Please pass in an"
|
||||||
@@ -361,17 +366,9 @@ class Pinecone(VectorStore):
|
|||||||
Returns:
|
Returns:
|
||||||
Pinecone Index instance."""
|
Pinecone Index instance."""
|
||||||
|
|
||||||
try:
|
pinecone = _import_pinecone()
|
||||||
import pinecone
|
|
||||||
except ImportError:
|
|
||||||
raise ValueError(
|
|
||||||
"Could not import pinecone python package. "
|
|
||||||
"Please install it with `pip install pinecone-client`."
|
|
||||||
)
|
|
||||||
|
|
||||||
pinecone_client_version = pinecone.__version__
|
if _is_pinecone_v3():
|
||||||
|
|
||||||
if version.parse(pinecone_client_version) >= version.parse("3.0.0.dev"):
|
|
||||||
pinecone_instance = pinecone.Pinecone(
|
pinecone_instance = pinecone.Pinecone(
|
||||||
api_key=os.environ.get("PINECONE_API_KEY"), pool_threads=pool_threads
|
api_key=os.environ.get("PINECONE_API_KEY"), pool_threads=pool_threads
|
||||||
)
|
)
|
||||||
@@ -383,7 +380,7 @@ class Pinecone(VectorStore):
|
|||||||
if index_name in index_names:
|
if index_name in index_names:
|
||||||
index = (
|
index = (
|
||||||
pinecone_instance.Index(index_name)
|
pinecone_instance.Index(index_name)
|
||||||
if version.parse(pinecone_client_version) >= version.parse("3.0.0")
|
if not _is_pinecone_v3()
|
||||||
else pinecone.Index(index_name, pool_threads=pool_threads)
|
else pinecone.Index(index_name, pool_threads=pool_threads)
|
||||||
)
|
)
|
||||||
elif len(index_names) == 0:
|
elif len(index_names) == 0:
|
||||||
|
Reference in New Issue
Block a user