Metadata-Version: 2.4
Name: langchain-vectorpanda
Version: 0.1.1
Summary: LangChain VectorStore integration for Vector Panda
Project-URL: Homepage, https://vectorpanda.com
Project-URL: Documentation, https://github.com/vectorpanda/langchain-vectorpanda
Project-URL: Repository, https://github.com/vectorpanda/langchain-vectorpanda
Project-URL: Issues, https://github.com/vectorpanda/langchain-vectorpanda/issues
Author-email: Vector Panda <hello@vectorpanda.com>
License-Expression: MIT
License-File: LICENSE
Keywords: embeddings,langchain,rag,search,vector,vectorstore
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Database
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
Requires-Python: >=3.9
Requires-Dist: langchain-core<2.0,>=0.3
Requires-Dist: numpy>=1.24
Requires-Dist: veep>=0.5.20
Provides-Extra: dev
Requires-Dist: pytest>=7.0; extra == 'dev'
Requires-Dist: responses>=0.23; extra == 'dev'
Requires-Dist: ruff>=0.6; extra == 'dev'
Description-Content-Type: text/markdown

# langchain-vectorpanda

LangChain VectorStore integration for [Vector Panda](https://vectorpanda.com).

Drop Vector Panda into any LangChain RAG application — `from_texts`,
`similarity_search`, MMR re-ranking, metadata filters, all work out of the box.

## Install

```bash
pip install langchain-vectorpanda
```

## Quickstart

```python
from langchain_openai import OpenAIEmbeddings
from langchain_vectorpanda import VectorPandaStore

embeddings = OpenAIEmbeddings()

# Create + populate in one call
store = VectorPandaStore.from_texts(
    texts=[
        "Pandas are bears native to south-central China.",
        "The Eiffel Tower is in Paris.",
        "Bamboo makes up 99% of a giant panda's diet.",
    ],
    embedding=embeddings,
    collection_name="my_docs",
    api_key="vp_...",
)

# Search
results = store.similarity_search("what do pandas eat?", k=2)
for doc in results:
    print(doc.page_content)

# With diversity (MMR)
results = store.max_marginal_relevance_search(
    "what do pandas eat?", k=2, fetch_k=10, lambda_mult=0.5
)

# With metadata filters (Mongo-style)
results = store.similarity_search(
    "Paris landmarks",
    k=3,
    filter={"category": {"$eq": "travel"}},
)
```

## Use an existing collection

```python
from veep import VP
from langchain_vectorpanda import VectorPandaStore

client = VP(api_key="vp_...")
store = VectorPandaStore(
    collection_name="my_existing_collection",
    embedding=embeddings,
    client=client,
)
```

## Use with RetrievalQA

```python
from langchain.chains import RetrievalQA
from langchain_openai import ChatOpenAI

retriever = store.as_retriever(search_type="mmr", search_kwargs={"k": 4})
qa = RetrievalQA.from_chain_type(llm=ChatOpenAI(), retriever=retriever)
qa.invoke({"query": "What do pandas eat?"})
```

## Filter syntax

Vector Panda accepts Mongo-style metadata filters:

| Operator | Example |
|---|---|
| `$eq`, `$ne` | `{"color": {"$eq": "red"}}` |
| `$gt`, `$gte`, `$lt`, `$lte` | `{"price": {"$gt": 100}}` |
| `$in`, `$nin` | `{"tag": {"$in": ["a", "b"]}}` |
| `$and`, `$or` | `{"$and": [{"a": 1}, {"b": 2}]}` |

A bare value is shorthand for `$eq`: `{"color": "red"}` ≡ `{"color": {"$eq": "red"}}`.

## License

MIT — see [LICENSE](LICENSE).
