diff --git a/cookbook/rag_fusion.ipynb b/cookbook/rag_fusion.ipynb
index 976e8cfab41..5cac01e9076 100644
--- a/cookbook/rag_fusion.ipynb
+++ b/cookbook/rag_fusion.ipynb
@@ -19,7 +19,9 @@
    "source": [
     "## Setup\n",
     "\n",
-    "For this example, we will use Pinecone and some fake data"
+    "For this example, we will use Pinecone and some fake data. To configure Pinecone, set the following environment variable:\n",
+    "\n",
+    "- `PINECONE_API_KEY`: Your Pinecone API key"
    ]
   },
   {
@@ -29,11 +31,8 @@
    "metadata": {},
    "outputs": [],
    "source": [
-    "import pinecone\n",
-    "from langchain_community.vectorstores import Pinecone\n",
     "from langchain_openai import OpenAIEmbeddings\n",
-    "\n",
-    "pinecone.init(api_key=\"...\", environment=\"...\")"
+    "from langchain_pinecone import PineconeVectorStore"
    ]
   },
   {
@@ -64,7 +63,7 @@
    "metadata": {},
    "outputs": [],
    "source": [
-    "vectorstore = Pinecone.from_texts(\n",
+    "vectorstore = PineconeVectorStore.from_texts(\n",
     "    list(all_documents.values()), OpenAIEmbeddings(), index_name=\"rag-fusion\"\n",
     ")"
    ]
@@ -162,7 +161,7 @@
    "metadata": {},
    "outputs": [],
    "source": [
-    "vectorstore = Pinecone.from_existing_index(\"rag-fusion\", OpenAIEmbeddings())\n",
+    "vectorstore = PineconeVectorStore.from_existing_index(\"rag-fusion\", OpenAIEmbeddings())\n",
     "retriever = vectorstore.as_retriever()"
    ]
   },
diff --git a/docs/docs/integrations/providers/pinecone.mdx b/docs/docs/integrations/providers/pinecone.mdx
index 905df1baa52..dc435980e20 100644
--- a/docs/docs/integrations/providers/pinecone.mdx
+++ b/docs/docs/integrations/providers/pinecone.mdx
@@ -18,7 +18,7 @@ There exists a wrapper around Pinecone indexes, allowing you to use it as a vect
 whether for semantic search or example selection.
 
 ```python
-from langchain_community.vectorstores import Pinecone
+from langchain_pinecone import PineconeVectorStore
 ```
 
 For a more detailed walkthrough of the Pinecone vectorstore, see [this notebook](/docs/integrations/vectorstores/pinecone)
diff --git a/docs/docs/integrations/retrievers/pinecone_hybrid_search.ipynb b/docs/docs/integrations/retrievers/pinecone_hybrid_search.ipynb
index f5bf39679b3..c1a6a89eb3d 100644
--- a/docs/docs/integrations/retrievers/pinecone_hybrid_search.ipynb
+++ b/docs/docs/integrations/retrievers/pinecone_hybrid_search.ipynb
@@ -119,13 +119,8 @@
     "import pinecone\n",
     "\n",
     "api_key = os.getenv(\"PINECONE_API_KEY\") or \"PINECONE_API_KEY\"\n",
-    "# find environment next to your API key in the Pinecone console\n",
-    "env = os.getenv(\"PINECONE_ENVIRONMENT\") or \"PINECONE_ENVIRONMENT\"\n",
     "\n",
-    "index_name = \"langchain-pinecone-hybrid-search\"\n",
-    "\n",
-    "pinecone.init(api_key=api_key, environment=env)\n",
-    "pinecone.whoami()"
+    "index_name = \"langchain-pinecone-hybrid-search\""
    ]
   },
   {
diff --git a/docs/docs/integrations/retrievers/self_query/pinecone.ipynb b/docs/docs/integrations/retrievers/self_query/pinecone.ipynb
index 4a76cd797ca..576cd7e53b7 100644
--- a/docs/docs/integrations/retrievers/self_query/pinecone.ipynb
+++ b/docs/docs/integrations/retrievers/self_query/pinecone.ipynb
@@ -78,8 +78,8 @@
    "outputs": [],
    "source": [
     "from langchain.schema import Document\n",
-    "from langchain_community.vectorstores import Pinecone\n",
     "from langchain_openai import OpenAIEmbeddings\n",
+    "from langchain_pinecone import PineconeVectorStore\n",
     "\n",
     "embeddings = OpenAIEmbeddings()\n",
     "# create new index\n",
@@ -124,7 +124,7 @@
     "        },\n",
     "    ),\n",
     "]\n",
-    "vectorstore = Pinecone.from_documents(\n",
+    "vectorstore = PineconeVectorStore.from_documents(\n",
     "    docs, embeddings, index_name=\"langchain-self-retriever-demo\"\n",
     ")"
    ]
diff --git a/docs/docs/integrations/vectorstores/pinecone.ipynb b/docs/docs/integrations/vectorstores/pinecone.ipynb
index 2c93de88096..f8c1643e0aa 100644
--- a/docs/docs/integrations/vectorstores/pinecone.ipynb
+++ b/docs/docs/integrations/vectorstores/pinecone.ipynb
@@ -71,7 +71,7 @@
    "source": [
     "Now let's assume you have your Pinecone index set up with `dimension=1536`.\n",
     "\n",
-    "We can connect to our Pinecone index and insert those chunked docs as contents with `Pinecone.from_documents`."
+    "We can connect to our Pinecone index and insert those chunked docs as contents with `PineconeVectorStore.from_documents`."
    ]
   },
   {
@@ -81,11 +81,11 @@
    "metadata": {},
    "outputs": [],
    "source": [
-    "from langchain_pinecone import Pinecone\n",
+    "from langchain_pinecone import PineconeVectorStore\n",
     "\n",
     "index_name = \"langchain-test-index\"\n",
     "\n",
-    "docsearch = Pinecone.from_documents(docs, embeddings, index_name=index_name)"
+    "docsearch = PineconeVectorStore.from_documents(docs, embeddings, index_name=index_name)"
    ]
   },
   {
@@ -143,7 +143,7 @@
     }
    ],
    "source": [
-    "vectorstore = Pinecone(index_name=index_name, embedding=embeddings)\n",
+    "vectorstore = PineconeVectorStore(index_name=index_name, embedding=embeddings)\n",
     "\n",
     "vectorstore.add_texts([\"More text!\"])"
    ]
diff --git a/docs/docs/use_cases/question_answering/per_user.ipynb b/docs/docs/use_cases/question_answering/per_user.ipynb
index d1459a73919..dbc50e223bf 100644
--- a/docs/docs/use_cases/question_answering/per_user.ipynb
+++ b/docs/docs/use_cases/question_answering/per_user.ipynb
@@ -35,28 +35,22 @@
     "\n",
     "## Code Example\n",
     "\n",
-    "Let's see a concrete example of what this looks like in code. We will use Pinecone for this example."
+    "Let's see a concrete example of what this looks like in code. We will use Pinecone for this example.\n",
+    "\n",
+    "To configure Pinecone, set the following environment variable:\n",
+    "\n",
+    "- `PINECONE_API_KEY`: Your Pinecone API key"
    ]
   },
   {
    "cell_type": "code",
-   "execution_count": 1,
+   "execution_count": null,
    "id": "75823b2d",
    "metadata": {},
-   "outputs": [
-    {
-     "name": "stderr",
-     "output_type": "stream",
-     "text": [
-      "/Users/harrisonchase/.pyenv/versions/3.10.1/envs/langchain/lib/python3.10/site-packages/pinecone/index.py:4: TqdmExperimentalWarning: Using `tqdm.autonotebook.tqdm` in notebook mode. Use `tqdm.tqdm` instead to force console mode (e.g. in jupyter console)\n",
-      "  from tqdm.autonotebook import tqdm\n"
-     ]
-    }
-   ],
+   "outputs": [],
    "source": [
-    "import pinecone\n",
-    "from langchain_community.vectorstores import Pinecone\n",
-    "from langchain_openai import OpenAIEmbeddings"
+    "from langchain_openai import OpenAIEmbeddings\n",
+    "from langchain_pinecone import PineconeVectorStore"
    ]
   },
   {
@@ -77,12 +71,8 @@
     }
    ],
    "source": [
-    "# The environment should be the one specified next to the API key\n",
-    "# in your Pinecone console\n",
-    "pinecone.init(api_key=\"...\", environment=\"...\")\n",
-    "index = pinecone.Index(\"test-example\")\n",
     "embeddings = OpenAIEmbeddings()\n",
-    "vectorstore = Pinecone(index, embeddings, \"text\")\n",
+    "vectorstore = PineconeVectorStore(index_name=\"test-example\", embedding=embeddings)\n",
     "\n",
     "vectorstore.add_texts([\"i worked at kensho\"], namespace=\"harrison\")\n",
     "vectorstore.add_texts([\"i worked at facebook\"], namespace=\"ankush\")"
@@ -301,15 +291,16 @@
   },
   {
    "cell_type": "markdown",
-   "source": [
-    "For more vectorstore implementations for multi-user, please refer to specific pages, such as [Milvus](/docs/integrations/vectorstores/milvus)."
-   ],
+   "id": "7fb27b941602401d91542211134fc71a",
    "metadata": {
     "collapsed": false,
     "pycharm": {
      "name": "#%% md\n"
     }
-   }
+   },
+   "source": [
+    "For more vectorstore implementations for multi-user, please refer to specific pages, such as [Milvus](/docs/integrations/vectorstores/milvus)."
+   ]
   }
  ],
  "metadata": {
@@ -333,4 +324,4 @@
  },
  "nbformat": 4,
  "nbformat_minor": 5
-}
\ No newline at end of file
+}
diff --git a/libs/community/langchain_community/vectorstores/pinecone.py b/libs/community/langchain_community/vectorstores/pinecone.py
index 0caf6b31c42..a2a92d68f32 100644
--- a/libs/community/langchain_community/vectorstores/pinecone.py
+++ b/libs/community/langchain_community/vectorstores/pinecone.py
@@ -402,7 +402,9 @@ class Pinecone(VectorStore):
         embeddings_chunk_size: int = 1000,
         **kwargs: Any,
     ) -> Pinecone:
-        """Construct Pinecone wrapper from raw documents.
+        """
+        DEPRECATED: use langchain_pinecone.PineconeVectorStore.from_texts instead:
+        Construct Pinecone wrapper from raw documents.
 
         This is a user friendly interface that:
             1. Embeds documents.
@@ -411,21 +413,20 @@ class Pinecone(VectorStore):
         This is intended to be a quick way to get started.
 
         The `pool_threads` affects the speed of the upsert operations.
+
         Example:
             .. code-block:: python
 
-                from langchain_community.vectorstores import Pinecone
-                from langchain_community.embeddings import OpenAIEmbeddings
-                import pinecone
+                from langchain_pinecone import PineconeVectorStore
+                from langchain_openai import OpenAIEmbeddings
 
-                # The environment should be the one specified next to the API key
-                # in your Pinecone console
-                pinecone.init(api_key="***", environment="...")
                 embeddings = OpenAIEmbeddings()
-                pinecone = Pinecone.from_texts(
-                    texts,
-                    embeddings,
-                    index_name="langchain-demo"
+                index_name = "my-index"
+                namespace = "my-namespace"
+                vectorstore = Pinecone(
+                    index_name=index_name,
+                    embedding=embedding,
+                    namespace=namespace,
                 )
         """
         pinecone_index = cls.get_pinecone_index(index_name, pool_threads)
diff --git a/libs/partners/pinecone/Makefile b/libs/partners/pinecone/Makefile
index 5f54fdd2285..7eb10fcc056 100644
--- a/libs/partners/pinecone/Makefile
+++ b/libs/partners/pinecone/Makefile
@@ -5,13 +5,9 @@ all: help
 
 # Define a variable for the test file path.
 TEST_FILE ?= tests/unit_tests/
+integration_test integration_tests: TEST_FILE = tests/integration_tests/
 
-integration_tests: TEST_FILE = tests/integration_tests/
-
-test integration_tests:
-	poetry run pytest $(TEST_FILE)
-
-tests:
+test tests integration_test integration_tests:
 	poetry run pytest $(TEST_FILE)
 
 
diff --git a/libs/partners/pinecone/README.md b/libs/partners/pinecone/README.md
index c0b1069a6d0..00298ffa002 100644
--- a/libs/partners/pinecone/README.md
+++ b/libs/partners/pinecone/README.md
@@ -12,14 +12,13 @@ And you should configure credentials by setting the following environment variab
 
 - `PINECONE_API_KEY`
 - `PINECONE_INDEX_NAME`
-- `PINECONE_ENVIRONMENT`
 
 ## Usage
 
 The `Pinecone` class exposes the connection to the Pinecone vector store.
 
 ```python
-from langchain_pinecone import Pinecone
+from langchain_pinecone import PineconeVectorStore
 
 embeddings = ... # use a LangChain Embeddings class
 
diff --git a/libs/partners/pinecone/langchain_pinecone/__init__.py b/libs/partners/pinecone/langchain_pinecone/__init__.py
index b71858853bb..57cc4b60033 100644
--- a/libs/partners/pinecone/langchain_pinecone/__init__.py
+++ b/libs/partners/pinecone/langchain_pinecone/__init__.py
@@ -1,5 +1,6 @@
-from langchain_pinecone.vectorstores import Pinecone
+from langchain_pinecone.vectorstores import Pinecone, PineconeVectorStore
 
 __all__ = [
+    "PineconeVectorStore",
     "Pinecone",
 ]
diff --git a/libs/partners/pinecone/langchain_pinecone/vectorstores.py b/libs/partners/pinecone/langchain_pinecone/vectorstores.py
index 66f56905583..12411070d02 100644
--- a/libs/partners/pinecone/langchain_pinecone/vectorstores.py
+++ b/libs/partners/pinecone/langchain_pinecone/vectorstores.py
@@ -15,6 +15,7 @@ from typing import (
 )
 
 import numpy as np
+from langchain_core._api.deprecation import deprecated
 from langchain_core.documents import Document
 from langchain_core.embeddings import Embeddings
 from langchain_core.utils.iter import batch_iterate
@@ -31,13 +32,15 @@ logger = logging.getLogger(__name__)
 VST = TypeVar("VST", bound=VectorStore)
 
 
-class Pinecone(VectorStore):
+class PineconeVectorStore(VectorStore):
     """`Pinecone` vector store.
 
+    Setup: set the `PINECONE_API_KEY` environment variable to your Pinecone API key.
+
     Example:
         .. code-block:: python
 
-            from langchain_pinecone import Pinecone
+            from langchain_pinecone import PineconeVectorStore
             from langchain_openai import OpenAIEmbeddings
 
             embeddings = OpenAIEmbeddings()
@@ -401,7 +404,7 @@ class Pinecone(VectorStore):
         pool_threads: int = 4,
         embeddings_chunk_size: int = 1000,
         **kwargs: Any,
-    ) -> Pinecone:
+    ) -> PineconeVectorStore:
         """Construct Pinecone wrapper from raw documents.
 
         This is a user friendly interface that:
@@ -411,21 +414,22 @@ class Pinecone(VectorStore):
         This is intended to be a quick way to get started.
 
         The `pool_threads` affects the speed of the upsert operations.
+
+        Setup: set the `PINECONE_API_KEY` environment variable to your Pinecone API key.
+
         Example:
             .. code-block:: python
 
-                from langchain_community.vectorstores import Pinecone
-                from langchain_community.embeddings import OpenAIEmbeddings
-                import pinecone
+                from langchain_pinecone import PineconeVectorStore
+                from langchain_openai import OpenAIEmbeddings
 
-                # The environment should be the one specified next to the API key
-                # in your Pinecone console
-                pinecone.init(api_key="***", environment="...")
                 embeddings = OpenAIEmbeddings()
-                pinecone = Pinecone.from_texts(
+                index_name = "my-index"
+                vectorstore = PineconeVectorStore.from_texts(
                     texts,
-                    embeddings,
-                    index_name="langchain-demo"
+                    index_name=index_name,
+                    embedding=embedding,
+                    namespace=namespace,
                 )
         """
         pinecone_index = cls.get_pinecone_index(index_name, pool_threads)
@@ -450,7 +454,7 @@ class Pinecone(VectorStore):
         text_key: str = "text",
         namespace: Optional[str] = None,
         pool_threads: int = 4,
-    ) -> Pinecone:
+    ) -> PineconeVectorStore:
         """Load pinecone vectorstore from index name."""
         pinecone_index = cls.get_pinecone_index(index_name, pool_threads)
         return cls(pinecone_index, embedding, text_key, namespace)
@@ -485,3 +489,10 @@ class Pinecone(VectorStore):
             raise ValueError("Either ids, delete_all, or filter must be provided.")
 
         return None
+
+
+@deprecated(since="0.0.3", removal="0.2.0", alternative="PineconeVectorStore")
+class Pinecone(PineconeVectorStore):
+    """Deprecated. Use PineconeVectorStore instead."""
+
+    pass
diff --git a/libs/partners/pinecone/poetry.lock b/libs/partners/pinecone/poetry.lock
index 14d48ec651d..e674d6c11fa 100644
--- a/libs/partners/pinecone/poetry.lock
+++ b/libs/partners/pinecone/poetry.lock
@@ -16,13 +16,13 @@ typing-extensions = {version = ">=4.0.0", markers = "python_version < \"3.9\""}
 
 [[package]]
 name = "anyio"
-version = "4.2.0"
+version = "4.3.0"
 description = "High level compatibility layer for multiple asynchronous event loop implementations"
 optional = false
 python-versions = ">=3.8"
 files = [
-    {file = "anyio-4.2.0-py3-none-any.whl", hash = "sha256:745843b39e829e108e518c489b31dc757de7d2131d53fac32bd8df268227bfee"},
-    {file = "anyio-4.2.0.tar.gz", hash = "sha256:e1875bb4b4e2de1669f4bc7869b6d3f54231cdced71605e6e64c9be77e3be50f"},
+    {file = "anyio-4.3.0-py3-none-any.whl", hash = "sha256:048e05d0f6caeed70d731f3db756d35dcc1f35747c8c403364a8332c630441b8"},
+    {file = "anyio-4.3.0.tar.gz", hash = "sha256:f75253795a87df48568485fd18cdd2a3fa5c4f7c5be8e5e36637733fce06fed6"},
 ]
 
 [package.dependencies]
@@ -226,13 +226,13 @@ files = [
 
 [[package]]
 name = "httpcore"
-version = "1.0.2"
+version = "1.0.4"
 description = "A minimal low-level HTTP client."
 optional = false
 python-versions = ">=3.8"
 files = [
-    {file = "httpcore-1.0.2-py3-none-any.whl", hash = "sha256:096cc05bca73b8e459a1fc3dcf585148f63e534eae4339559c9b8a8d6399acc7"},
-    {file = "httpcore-1.0.2.tar.gz", hash = "sha256:9fc092e4799b26174648e54b74ed5f683132a464e95643b226e00c2ed2fa6535"},
+    {file = "httpcore-1.0.4-py3-none-any.whl", hash = "sha256:ac418c1db41bade2ad53ae2f3834a3a0f5ae76b56cf5aa497d2d033384fc7d73"},
+    {file = "httpcore-1.0.4.tar.gz", hash = "sha256:cb2839ccfcba0d2d3c1131d3c3e26dfc327326fbe7a5dc0dbfe9f6c9151bb022"},
 ]
 
 [package.dependencies]
@@ -243,17 +243,17 @@ h11 = ">=0.13,<0.15"
 asyncio = ["anyio (>=4.0,<5.0)"]
 http2 = ["h2 (>=3,<5)"]
 socks = ["socksio (==1.*)"]
-trio = ["trio (>=0.22.0,<0.23.0)"]
+trio = ["trio (>=0.22.0,<0.25.0)"]
 
 [[package]]
 name = "httpx"
-version = "0.26.0"
+version = "0.27.0"
 description = "The next generation HTTP client."
 optional = false
 python-versions = ">=3.8"
 files = [
-    {file = "httpx-0.26.0-py3-none-any.whl", hash = "sha256:8915f5a3627c4d47b73e8202457cb28f1266982d1159bd5779d86a80c0eab1cd"},
-    {file = "httpx-0.26.0.tar.gz", hash = "sha256:451b55c30d5185ea6b23c2c793abf9bb237d2a7dfb901ced6ff69ad37ec1dfaf"},
+    {file = "httpx-0.27.0-py3-none-any.whl", hash = "sha256:71d5465162c13681bff01ad59b2cc68dd838ea1f10e51574bac27103f00c91a5"},
+    {file = "httpx-0.27.0.tar.gz", hash = "sha256:a0cb88a46f32dc874e04ee956e4c2764aba2aa228f650b06788ba6bda2962ab5"},
 ]
 
 [package.dependencies]
@@ -318,7 +318,7 @@ files = [
 
 [[package]]
 name = "langchain-core"
-version = "0.1.23"
+version = "0.1.25"
 description = "Building applications with LLMs through composability"
 optional = false
 python-versions = ">=3.8.1,<4.0"
@@ -328,7 +328,7 @@ develop = true
 [package.dependencies]
 anyio = ">=3,<5"
 jsonpatch = "^1.33"
-langsmith = "^0.0.87"
+langsmith = "^0.1.0"
 packaging = "^23.2"
 pydantic = ">=1,<3"
 PyYAML = ">=5.3"
@@ -361,13 +361,13 @@ tiktoken = ">=0.5.2,<1"
 
 [[package]]
 name = "langsmith"
-version = "0.0.87"
+version = "0.1.5"
 description = "Client library to connect to the LangSmith LLM Tracing and Evaluation Platform."
 optional = false
 python-versions = ">=3.8.1,<4.0"
 files = [
-    {file = "langsmith-0.0.87-py3-none-any.whl", hash = "sha256:8903d3811b9fc89eb18f5961c8e6935fbd2d0f119884fbf30dc70b8f8f4121fc"},
-    {file = "langsmith-0.0.87.tar.gz", hash = "sha256:36c4cc47e5b54be57d038036a30fb19ce6e4c73048cd7a464b8f25b459694d34"},
+    {file = "langsmith-0.1.5-py3-none-any.whl", hash = "sha256:a1811821a923d90e53bcbacdd0988c3c366aff8f4c120d8777e7af8ecda06268"},
+    {file = "langsmith-0.1.5.tar.gz", hash = "sha256:aa7a2861aa3d9ae563a077c622953533800466c4e2e539b0d567b84d5fd5b157"},
 ]
 
 [package.dependencies]
@@ -508,13 +508,13 @@ files = [
 
 [[package]]
 name = "pinecone-client"
-version = "3.0.2"
+version = "3.0.3"
 description = "Pinecone client and SDK"
 optional = false
 python-versions = ">=3.8,<3.13"
 files = [
-    {file = "pinecone_client-3.0.2-py3-none-any.whl", hash = "sha256:72696c883b47c0f65808bf623aebe940c07bc396f2126b627aad63d6e3cb6c43"},
-    {file = "pinecone_client-3.0.2.tar.gz", hash = "sha256:f9a0830333eece107b4ef1119de23dad6a61bffab7f238e618416d51c46d29c8"},
+    {file = "pinecone_client-3.0.3-py3-none-any.whl", hash = "sha256:940c942aeb259145e1cd6d3f214ad977dbb4dc2e626b3528fb5015c64c3e6190"},
+    {file = "pinecone_client-3.0.3.tar.gz", hash = "sha256:2ad3ef7627edc4d9ee248d9781861c4341d6d27a15bc05f6bef53d958837d374"},
 ]
 
 [package.dependencies]
@@ -1092,13 +1092,13 @@ files = [
 
 [[package]]
 name = "urllib3"
-version = "2.2.0"
+version = "2.2.1"
 description = "HTTP library with thread-safe connection pooling, file post, and more."
 optional = false
 python-versions = ">=3.8"
 files = [
-    {file = "urllib3-2.2.0-py3-none-any.whl", hash = "sha256:ce3711610ddce217e6d113a2732fafad960a03fd0318c91faa79481e35c11224"},
-    {file = "urllib3-2.2.0.tar.gz", hash = "sha256:051d961ad0c62a94e50ecf1af379c3aba230c66c710493493560c0c223c49f20"},
+    {file = "urllib3-2.2.1-py3-none-any.whl", hash = "sha256:450b20ec296a467077128bff42b73080516e71b56ff59a60a02bef2232c4fa9d"},
+    {file = "urllib3-2.2.1.tar.gz", hash = "sha256:d0570876c61ab9e520d776c38acbbb5b05a776d3f9ff98a5c8fd5162a444cf19"},
 ]
 
 [package.extras]
diff --git a/libs/partners/pinecone/pyproject.toml b/libs/partners/pinecone/pyproject.toml
index 83b435f3192..e3fba0fc185 100644
--- a/libs/partners/pinecone/pyproject.toml
+++ b/libs/partners/pinecone/pyproject.toml
@@ -1,6 +1,6 @@
 [tool.poetry]
 name = "langchain-pinecone"
-version = "0.0.2"
+version = "0.0.3"
 description = "An integration package connecting Pinecone and LangChain"
 authors = []
 readme = "README.md"
diff --git a/libs/partners/pinecone/tests/integration_tests/test_vectorstores.py b/libs/partners/pinecone/tests/integration_tests/test_vectorstores.py
index 0cd4d5cf290..ca56fbda0fa 100644
--- a/libs/partners/pinecone/tests/integration_tests/test_vectorstores.py
+++ b/libs/partners/pinecone/tests/integration_tests/test_vectorstores.py
@@ -10,7 +10,7 @@ from langchain_core.documents import Document
 from langchain_openai import OpenAIEmbeddings
 from pinecone import PodSpec
 
-from langchain_pinecone import Pinecone
+from langchain_pinecone import PineconeVectorStore
 
 INDEX_NAME = "langchain-test-index"  # name of the index
 NAMESPACE_NAME = "langchain-test-namespace"  # name of the namespace
@@ -80,7 +80,7 @@ class TestPinecone:
         needs = f"foobuu {unique_id} booo"
         texts.insert(0, needs)
 
-        docsearch = Pinecone.from_texts(
+        docsearch = PineconeVectorStore.from_texts(
             texts=texts,
             embedding=embedding_openai,
             index_name=INDEX_NAME,
@@ -102,7 +102,7 @@ class TestPinecone:
         metadatas = [{"page": i} for i in range(len(texts))]
 
         namespace = f"{NAMESPACE_NAME}-md"
-        docsearch = Pinecone.from_texts(
+        docsearch = PineconeVectorStore.from_texts(
             texts,
             embedding_openai,
             index_name=INDEX_NAME,
@@ -120,7 +120,7 @@ class TestPinecone:
         texts = ["foo", "bar", "baz"]
         metadatas = [{"page": i} for i in range(len(texts))]
         print("metadatas", metadatas)  # noqa: T201
-        docsearch = Pinecone.from_texts(
+        docsearch = PineconeVectorStore.from_texts(
             texts,
             embedding_openai,
             index_name=INDEX_NAME,
@@ -152,7 +152,7 @@ class TestPinecone:
         # Create two indexes with the same name but different namespaces
         texts_1 = ["foo", "bar", "baz"]
         metadatas = [{"page": i} for i in range(len(texts_1))]
-        Pinecone.from_texts(
+        PineconeVectorStore.from_texts(
             texts_1,
             embedding_openai,
             index_name=INDEX_NAME,
@@ -163,7 +163,7 @@ class TestPinecone:
         texts_2 = ["foo2", "bar2", "baz2"]
         metadatas = [{"page": i} for i in range(len(texts_2))]
 
-        Pinecone.from_texts(
+        PineconeVectorStore.from_texts(
             texts_2,
             embedding_openai,
             index_name=INDEX_NAME,
@@ -174,7 +174,7 @@ class TestPinecone:
         time.sleep(DEFAULT_SLEEP)  # prevent race condition
 
         # Search with namespace
-        docsearch = Pinecone.from_existing_index(
+        docsearch = PineconeVectorStore.from_existing_index(
             index_name=INDEX_NAME,
             embedding=embedding_openai,
             namespace=f"{INDEX_NAME}-1",
@@ -189,7 +189,7 @@ class TestPinecone:
         self, texts: List[str], embedding_openai: OpenAIEmbeddings
     ) -> None:
         ids = [uuid.uuid4().hex for _ in range(len(texts))]
-        Pinecone.from_texts(
+        PineconeVectorStore.from_texts(
             texts=texts,
             ids=ids,
             embedding=embedding_openai,
@@ -201,7 +201,7 @@ class TestPinecone:
         assert index_stats["namespaces"][NAMESPACE_NAME]["vector_count"] == len(texts)
 
         ids_1 = [uuid.uuid4().hex for _ in range(len(texts))]
-        Pinecone.from_texts(
+        PineconeVectorStore.from_texts(
             texts=[t + "-1" for t in texts],
             ids=ids_1,
             embedding=embedding_openai,
@@ -221,7 +221,7 @@ class TestPinecone:
         """Ensures all relevance scores are between 0 and 1."""
         texts = ["foo", "bar", "baz"]
         metadatas = [{"page": i} for i in range(len(texts))]
-        docsearch = Pinecone.from_texts(
+        docsearch = PineconeVectorStore.from_texts(
             texts,
             embedding_openai,
             index_name=INDEX_NAME,
@@ -274,7 +274,7 @@ class TestPinecone:
         texts = [document.page_content for document in documents] * data_multiplier
         uuids = [uuid.uuid4().hex for _ in range(len(texts))]
         metadatas = [{"page": i} for i in range(len(texts))]
-        docsearch = Pinecone.from_texts(
+        docsearch = PineconeVectorStore.from_texts(
             texts,
             embedding_openai,
             ids=uuids,
diff --git a/libs/partners/pinecone/tests/unit_tests/test_imports.py b/libs/partners/pinecone/tests/unit_tests/test_imports.py
index 0a5c986c2d2..b8a2661ea61 100644
--- a/libs/partners/pinecone/tests/unit_tests/test_imports.py
+++ b/libs/partners/pinecone/tests/unit_tests/test_imports.py
@@ -1,6 +1,7 @@
 from langchain_pinecone import __all__
 
 EXPECTED_ALL = [
+    "PineconeVectorStore",
     "Pinecone",
 ]
 
diff --git a/templates/docs/INDEX.md b/templates/docs/INDEX.md
index 7fc1ecf7fef..2a5294d74cc 100644
--- a/templates/docs/INDEX.md
+++ b/templates/docs/INDEX.md
@@ -6,7 +6,7 @@ Highlighting a few different categories of templates
 
 These are some of the more popular templates to get started with.
 
-- [Retrieval Augmented Generation Chatbot](../rag-conversation): Build a chatbot over your data. Defaults to OpenAI and Pinecone.
+- [Retrieval Augmented Generation Chatbot](../rag-conversation): Build a chatbot over your data. Defaults to OpenAI and PineconeVectorStore.
 - [Extraction with OpenAI Functions](../extraction-openai-functions): Do extraction of structured data from unstructured data. Uses OpenAI function calling.
 - [Local Retrieval Augmented Generation](../rag-chroma-private): Build a chatbot over your data. Uses only local tooling: Ollama, GPT4all, Chroma.
 - [OpenAI Functions Agent](../openai-functions-agent): Build a chatbot that can take actions. Uses OpenAI function calling and Tavily.
diff --git a/templates/rag-conversation/rag_conversation/chain.py b/templates/rag-conversation/rag_conversation/chain.py
index 3361805f839..29199b2211e 100644
--- a/templates/rag-conversation/rag_conversation/chain.py
+++ b/templates/rag-conversation/rag_conversation/chain.py
@@ -5,7 +5,6 @@ from typing import List, Tuple
 from langchain.schema import AIMessage, HumanMessage, format_document
 from langchain_community.chat_models import ChatOpenAI
 from langchain_community.embeddings import OpenAIEmbeddings
-from langchain_community.vectorstores import Pinecone
 from langchain_core.output_parsers import StrOutputParser
 from langchain_core.prompts import ChatPromptTemplate, MessagesPlaceholder
 from langchain_core.prompts.prompt import PromptTemplate
@@ -16,6 +15,7 @@ from langchain_core.runnables import (
     RunnableParallel,
     RunnablePassthrough,
 )
+from langchain_pinecone import PineconeVectorStore
 
 if os.environ.get("PINECONE_API_KEY", None) is None:
     raise Exception("Missing `PINECONE_API_KEY` environment variable.")
@@ -37,12 +37,14 @@ PINECONE_INDEX_NAME = os.environ.get("PINECONE_INDEX", "langchain-test")
 # all_splits = text_splitter.split_documents(data)
 
 # # Add to vectorDB
-# vectorstore = Pinecone.from_documents(
+# vectorstore = PineconeVectorStore.from_documents(
 #     documents=all_splits, embedding=OpenAIEmbeddings(), index_name=PINECONE_INDEX_NAME
 # )
 # retriever = vectorstore.as_retriever()
 
-vectorstore = Pinecone.from_existing_index(PINECONE_INDEX_NAME, OpenAIEmbeddings())
+vectorstore = PineconeVectorStore.from_existing_index(
+    PINECONE_INDEX_NAME, OpenAIEmbeddings()
+)
 retriever = vectorstore.as_retriever()
 
 # Condense a chat history and follow-up question into a standalone question
diff --git a/templates/rag-fusion/ingest.py b/templates/rag-fusion/ingest.py
index 071a35a8469..227d0382081 100644
--- a/templates/rag-fusion/ingest.py
+++ b/templates/rag-fusion/ingest.py
@@ -1,5 +1,5 @@
 from langchain_community.embeddings import OpenAIEmbeddings
-from langchain_community.vectorstores import Pinecone
+from langchain_pinecone import PineconeVectorStore
 
 all_documents = {
     "doc1": "Climate change and economic impact.",
@@ -14,6 +14,6 @@ all_documents = {
     "doc10": "The history of climate change activism.",
 }
 
-Pinecone.from_texts(
+PineconeVectorStore.from_texts(
     list(all_documents.values()), OpenAIEmbeddings(), index_name="rag-fusion"
 )
diff --git a/templates/rag-fusion/rag_fusion/chain.py b/templates/rag-fusion/rag_fusion/chain.py
index 1f19a0c1508..75ac0ed41bb 100644
--- a/templates/rag-fusion/rag_fusion/chain.py
+++ b/templates/rag-fusion/rag_fusion/chain.py
@@ -2,9 +2,9 @@ from langchain import hub
 from langchain.load import dumps, loads
 from langchain_community.chat_models import ChatOpenAI
 from langchain_community.embeddings import OpenAIEmbeddings
-from langchain_community.vectorstores import Pinecone
 from langchain_core.output_parsers import StrOutputParser
 from langchain_core.pydantic_v1 import BaseModel
+from langchain_pinecone import PineconeVectorStore
 
 
 def reciprocal_rank_fusion(results: list[list], k=60):
@@ -30,7 +30,7 @@ generate_queries = (
     prompt | ChatOpenAI(temperature=0) | StrOutputParser() | (lambda x: x.split("\n"))
 )
 
-vectorstore = Pinecone.from_existing_index("rag-fusion", OpenAIEmbeddings())
+vectorstore = PineconeVectorStore.from_existing_index("rag-fusion", OpenAIEmbeddings())
 retriever = vectorstore.as_retriever()
 
 chain = (
diff --git a/templates/rag-pinecone-multi-query/rag_pinecone_multi_query/chain.py b/templates/rag-pinecone-multi-query/rag_pinecone_multi_query/chain.py
index af57cddfbd9..50e88f2070a 100644
--- a/templates/rag-pinecone-multi-query/rag_pinecone_multi_query/chain.py
+++ b/templates/rag-pinecone-multi-query/rag_pinecone_multi_query/chain.py
@@ -3,11 +3,11 @@ import os
 from langchain.retrievers.multi_query import MultiQueryRetriever
 from langchain_community.chat_models import ChatOpenAI
 from langchain_community.embeddings import OpenAIEmbeddings
-from langchain_community.vectorstores import Pinecone
 from langchain_core.output_parsers import StrOutputParser
 from langchain_core.prompts import ChatPromptTemplate
 from langchain_core.pydantic_v1 import BaseModel
 from langchain_core.runnables import RunnableParallel, RunnablePassthrough
+from langchain_pinecone import PineconeVectorStore
 
 if os.environ.get("PINECONE_API_KEY", None) is None:
     raise Exception("Missing `PINECONE_API_KEY` environment variable.")
@@ -29,13 +29,15 @@ PINECONE_INDEX_NAME = os.environ.get("PINECONE_INDEX", "langchain-test")
 # all_splits = text_splitter.split_documents(data)
 
 # # Add to vectorDB
-# vectorstore = Pinecone.from_documents(
+# vectorstore = PineconeVectorStore.from_documents(
 #     documents=all_splits, embedding=OpenAIEmbeddings(), index_name=PINECONE_INDEX_NAME
 # )
 # retriever = vectorstore.as_retriever()
 
 # Set up index with multi query retriever
-vectorstore = Pinecone.from_existing_index(PINECONE_INDEX_NAME, OpenAIEmbeddings())
+vectorstore = PineconeVectorStore.from_existing_index(
+    PINECONE_INDEX_NAME, OpenAIEmbeddings()
+)
 model = ChatOpenAI(temperature=0)
 retriever = MultiQueryRetriever.from_llm(
     retriever=vectorstore.as_retriever(), llm=model
diff --git a/templates/rag-pinecone-rerank/rag_pinecone_rerank/chain.py b/templates/rag-pinecone-rerank/rag_pinecone_rerank/chain.py
index 3ab9a509c4c..690e538b78b 100644
--- a/templates/rag-pinecone-rerank/rag_pinecone_rerank/chain.py
+++ b/templates/rag-pinecone-rerank/rag_pinecone_rerank/chain.py
@@ -4,11 +4,11 @@ from langchain.retrievers import ContextualCompressionRetriever
 from langchain.retrievers.document_compressors import CohereRerank
 from langchain_community.chat_models import ChatOpenAI
 from langchain_community.embeddings import OpenAIEmbeddings
-from langchain_community.vectorstores import Pinecone
 from langchain_core.output_parsers import StrOutputParser
 from langchain_core.prompts import ChatPromptTemplate
 from langchain_core.pydantic_v1 import BaseModel
 from langchain_core.runnables import RunnableParallel, RunnablePassthrough
+from langchain_pinecone import PineconeVectorStore
 
 if os.environ.get("PINECONE_API_KEY", None) is None:
     raise Exception("Missing `PINECONE_API_KEY` environment variable.")
@@ -30,12 +30,14 @@ PINECONE_INDEX_NAME = os.environ.get("PINECONE_INDEX", "langchain-test")
 # all_splits = text_splitter.split_documents(data)
 
 # # Add to vectorDB
-# vectorstore = Pinecone.from_documents(
+# vectorstore = PineconeVectorStore.from_documents(
 #     documents=all_splits, embedding=OpenAIEmbeddings(), index_name=PINECONE_INDEX_NAME
 # )
 # retriever = vectorstore.as_retriever()
 
-vectorstore = Pinecone.from_existing_index(PINECONE_INDEX_NAME, OpenAIEmbeddings())
+vectorstore = PineconeVectorStore.from_existing_index(
+    PINECONE_INDEX_NAME, OpenAIEmbeddings()
+)
 
 # Get k=10 docs
 retriever = vectorstore.as_retriever(search_kwargs={"k": 10})
diff --git a/templates/rag-pinecone/rag_pinecone/chain.py b/templates/rag-pinecone/rag_pinecone/chain.py
index 4a68966ab6b..cf30ba29a0e 100644
--- a/templates/rag-pinecone/rag_pinecone/chain.py
+++ b/templates/rag-pinecone/rag_pinecone/chain.py
@@ -2,11 +2,11 @@ import os
 
 from langchain_community.chat_models import ChatOpenAI
 from langchain_community.embeddings import OpenAIEmbeddings
-from langchain_community.vectorstores import Pinecone
 from langchain_core.output_parsers import StrOutputParser
 from langchain_core.prompts import ChatPromptTemplate
 from langchain_core.pydantic_v1 import BaseModel
 from langchain_core.runnables import RunnableParallel, RunnablePassthrough
+from langchain_pinecone import PineconeVectorStore
 
 if os.environ.get("PINECONE_API_KEY", None) is None:
     raise Exception("Missing `PINECONE_API_KEY` environment variable.")
@@ -28,12 +28,14 @@ PINECONE_INDEX_NAME = os.environ.get("PINECONE_INDEX", "langchain-test")
 # all_splits = text_splitter.split_documents(data)
 
 # # Add to vectorDB
-# vectorstore = Pinecone.from_documents(
+# vectorstore = PineconeVectorStore.from_documents(
 #     documents=all_splits, embedding=OpenAIEmbeddings(), index_name=PINECONE_INDEX_NAME
 # )
 # retriever = vectorstore.as_retriever()
 
-vectorstore = Pinecone.from_existing_index(PINECONE_INDEX_NAME, OpenAIEmbeddings())
+vectorstore = PineconeVectorStore.from_existing_index(
+    PINECONE_INDEX_NAME, OpenAIEmbeddings()
+)
 retriever = vectorstore.as_retriever()
 
 # RAG prompt