# PineconeVectorStore

> **Class** in `langchain_pinecone`

📖 [View in docs](https://reference.langchain.com/python/langchain-pinecone/vectorstores/PineconeVectorStore)

Pinecone vector store integration.

## Signature

```python
PineconeVectorStore(
    self,
    index: Optional[Any] = None,
    embedding: Optional[Embeddings] = None,
    text_key: Optional[str] = 'text',
    namespace: Optional[str] = None,
    distance_strategy: Optional[DistanceStrategy] = DistanceStrategy.COSINE,
    *,
    pinecone_api_key: Optional[str] = None,
    index_name: Optional[str] = None,
    host: Optional[str] = None,
)
```

## Description

**Setup:**

Install `langchain-pinecone` and set the environment variable `PINECONE_API_KEY`.

```bash
pip install -qU langchain-pinecone
export PINECONE_API_KEY="your-pinecone-api-key"
```

Key init args — indexing params:
    embedding: Embeddings
        Embedding function to use.

Key init args — client params:
    index: Optional[Index]
        Index to use.

# TODO: Replace with relevant init params.
Instantiate:
    ```python
    import time
    import os
    from pinecone import Pinecone, ServerlessSpec
    from langchain_pinecone import PineconeVectorStore
    from langchain_openai import OpenAIEmbeddings

    pc = Pinecone(api_key=os.environ.get("PINECONE_API_KEY"))

    index_name = "langchain-test-index"  # change if desired

    existing_indexes = [index_info["name"] for index_info in pc.list_indexes()]

    if index_name not in existing_indexes:
        pc.create_index(
            name=index_name,
            dimension=1536,
            metric="cosine",
            spec=ServerlessSpec(cloud="aws", region="us-east-1"),
            deletion_protection="enabled",  # Defaults to "disabled"
        )
        while not pc.describe_index(index_name).status["ready"]:
            time.sleep(1)

    index = pc.Index(index_name)
    vector_store = PineconeVectorStore(index=index, embedding=OpenAIEmbeddings())
    ```

**Add Documents:**

```python
from langchain_core.documents import Document

document_1 = Document(page_content="foo", metadata={"baz": "bar"})
document_2 = Document(page_content="thud", metadata={"bar": "baz"})
document_3 = Document(page_content="i will be deleted :(")

documents = [document_1, document_2, document_3]
ids = ["1", "2", "3"]
vector_store.add_documents(documents=documents, ids=ids)
```

**Delete Documents:**

```python
vector_store.delete(ids=["3"])
```

**Search:**

```python
results = vector_store.similarity_search(query="thud", k=1)
for doc in results:
    print(f"* {doc.page_content} [{doc.metadata}]")
```

```text
* thud [{'bar': 'baz'}]
```

**Search with filter:**

```python
results = vector_store.similarity_search(query="thud", k=1, filter={"bar": "baz"})
for doc in results:
    print(f"* {doc.page_content} [{doc.metadata}]")
```

```text
* thud [{'bar': 'baz'}]
```

**Search with score:**

```python
results = vector_store.similarity_search_with_score(query="qux", k=1)
for doc, score in results:
    print(f"* [SIM={score:3f}] {doc.page_content} [{doc.metadata}]")
```

```text
* [SIM=0.832268] foo [{'baz': 'bar'}]
```

**Async:**

```python
# add documents
# await vector_store.aadd_documents(documents=documents, ids=ids)

# delete documents
# await vector_store.adelete(ids=["3"])

# search
# results = vector_store.asimilarity_search(query="thud", k=1)

# search with score
results = await vector_store.asimilarity_search_with_score(query="qux", k=1)
for doc, score in results:
    print(f"* [SIM={score:3f}] {doc.page_content} [{doc.metadata}]")
```

```text
* [SIM=0.832268] foo [{'baz': 'bar'}]
```

**Use as Retriever:**

```python
retriever = vector_store.as_retriever(
    search_type="mmr",
    search_kwargs={"k": 1, "fetch_k": 2, "lambda_mult": 0.5},
)
retriever.invoke("thud")
```

```text
[Document(metadata={'bar': 'baz'}, page_content='thud')]
```

## Extends

- `VectorStore`

## Constructors

```python
__init__(
    self,
    index: Optional[Any] = None,
    embedding: Optional[Embeddings] = None,
    text_key: Optional[str] = 'text',
    namespace: Optional[str] = None,
    distance_strategy: Optional[DistanceStrategy] = DistanceStrategy.COSINE,
    *,
    pinecone_api_key: Optional[str] = None,
    index_name: Optional[str] = None,
    host: Optional[str] = None,
)
```

| Name | Type |
|------|------|
| `index` | `Optional[Any]` |
| `embedding` | `Optional[Embeddings]` |
| `text_key` | `Optional[str]` |
| `namespace` | `Optional[str]` |
| `distance_strategy` | `Optional[DistanceStrategy]` |
| `pinecone_api_key` | `Optional[str]` |
| `index_name` | `Optional[str]` |
| `host` | `Optional[str]` |


## Properties

- `distance_strategy`
- `index`
- `async_index`
- `embeddings`

## Methods

- [`add_texts()`](https://reference.langchain.com/python/langchain-pinecone/vectorstores/PineconeVectorStore/add_texts)
- [`aadd_texts()`](https://reference.langchain.com/python/langchain-pinecone/vectorstores/PineconeVectorStore/aadd_texts)
- [`aclose()`](https://reference.langchain.com/python/langchain-pinecone/vectorstores/PineconeVectorStore/aclose)
- [`similarity_search_by_vector()`](https://reference.langchain.com/python/langchain-pinecone/vectorstores/PineconeVectorStore/similarity_search_by_vector)
- [`asimilarity_search_by_vector()`](https://reference.langchain.com/python/langchain-pinecone/vectorstores/PineconeVectorStore/asimilarity_search_by_vector)
- [`similarity_search_with_score()`](https://reference.langchain.com/python/langchain-pinecone/vectorstores/PineconeVectorStore/similarity_search_with_score)
- [`asimilarity_search_with_score()`](https://reference.langchain.com/python/langchain-pinecone/vectorstores/PineconeVectorStore/asimilarity_search_with_score)
- [`similarity_search_by_vector_with_score()`](https://reference.langchain.com/python/langchain-pinecone/vectorstores/PineconeVectorStore/similarity_search_by_vector_with_score)
- [`asimilarity_search_by_vector_with_score()`](https://reference.langchain.com/python/langchain-pinecone/vectorstores/PineconeVectorStore/asimilarity_search_by_vector_with_score)
- [`similarity_search()`](https://reference.langchain.com/python/langchain-pinecone/vectorstores/PineconeVectorStore/similarity_search)
- [`asimilarity_search()`](https://reference.langchain.com/python/langchain-pinecone/vectorstores/PineconeVectorStore/asimilarity_search)
- [`max_marginal_relevance_search_by_vector()`](https://reference.langchain.com/python/langchain-pinecone/vectorstores/PineconeVectorStore/max_marginal_relevance_search_by_vector)
- [`amax_marginal_relevance_search_by_vector()`](https://reference.langchain.com/python/langchain-pinecone/vectorstores/PineconeVectorStore/amax_marginal_relevance_search_by_vector)
- [`max_marginal_relevance_search()`](https://reference.langchain.com/python/langchain-pinecone/vectorstores/PineconeVectorStore/max_marginal_relevance_search)
- [`amax_marginal_relevance_search()`](https://reference.langchain.com/python/langchain-pinecone/vectorstores/PineconeVectorStore/amax_marginal_relevance_search)
- [`get_pinecone_index()`](https://reference.langchain.com/python/langchain-pinecone/vectorstores/PineconeVectorStore/get_pinecone_index)
- [`from_texts()`](https://reference.langchain.com/python/langchain-pinecone/vectorstores/PineconeVectorStore/from_texts)
- [`afrom_texts()`](https://reference.langchain.com/python/langchain-pinecone/vectorstores/PineconeVectorStore/afrom_texts)
- [`from_existing_index()`](https://reference.langchain.com/python/langchain-pinecone/vectorstores/PineconeVectorStore/from_existing_index)
- [`delete()`](https://reference.langchain.com/python/langchain-pinecone/vectorstores/PineconeVectorStore/delete)
- [`adelete()`](https://reference.langchain.com/python/langchain-pinecone/vectorstores/PineconeVectorStore/adelete)

---

[View source on GitHub](https://github.com/langchain-ai/langchain-pinecone/blob/199d069b8d2b8195605c333bc59684f65cfe0fc7/libs/pinecone/langchain_pinecone/vectorstores.py#L50)