Skip to main content

LangChain integration for FoxNose - the knowledge layer for RAG and AI agents

Project description

langchain-foxnose

PyPI version Python License CI codecov

LangChain integration for FoxNose — the serverless knowledge platform purpose-built as the knowledge layer for RAG and AI agents.

  • FoxNoseRetriever — query-based retrieval for RAG pipelines
  • FoxNoseLoader — bulk document loading with cursor-based pagination
  • create_foxnose_tool — search tool for LLM agents

Installation

pip install langchain-foxnose

Quick Start

from foxnose_sdk.flux import FluxClient
from foxnose_sdk.auth import SimpleKeyAuth
from langchain_foxnose import FoxNoseRetriever

# Create a FoxNose Flux client
client = FluxClient(
    base_url="https://<env_key>.fxns.io",
    api_prefix="my_api",
    auth=SimpleKeyAuth("YOUR_PUBLIC_KEY", "YOUR_SECRET_KEY"),
)

# Create the retriever
retriever = FoxNoseRetriever(
    client=client,
    folder_path="knowledge-base",
    page_content_field="body",
    search_mode="hybrid",
    top_k=5,
)

# Use it
docs = retriever.invoke("How do I reset my password?")
for doc in docs:
    print(doc.page_content)
    print(doc.metadata)

Features

  • All search modes: text, vector, hybrid, and vector-boosted search
  • Bulk document loading: cursor-based pagination with lazy loading for large folders
  • Agent-ready search tool: wrap any retriever as a tool for LLM agents
  • Flexible content mapping: single field, multiple fields, or custom mapper function
  • Metadata control: whitelist, blacklist, or include system metadata
  • Native async: uses AsyncFluxClient for true async when available
  • Structured filtering: pass FoxNose where filters for precise retrieval
  • Full configuration: search fields, thresholds, hybrid weights, sort, and more

Search Modes

# Pure vector (semantic) search
retriever = FoxNoseRetriever(
    client=client,
    folder_path="articles",
    page_content_field="body",
    search_mode="vector",
)

# Hybrid search (text + vector)
retriever = FoxNoseRetriever(
    client=client,
    folder_path="articles",
    page_content_field="body",
    search_mode="hybrid",
    hybrid_config={"vector_weight": 0.6, "text_weight": 0.4},
)

# Text search with vector boost
retriever = FoxNoseRetriever(
    client=client,
    folder_path="articles",
    page_content_field="body",
    search_mode="vector_boosted",
    vector_boost_config={"boost_factor": 1.3},
)

Filtered Retrieval

retriever = FoxNoseRetriever(
    client=client,
    folder_path="articles",
    page_content_field="body",
    where={
        "$": {
            "all_of": [
                {"status__eq": "published"},
                {"category__in": ["tech", "science"]},
            ]
        }
    },
)

Document Loader

FoxNoseLoader iterates over all resources in a folder using cursor-based pagination. Use it to bulk-load documents for indexing, batch processing, or seeding a local vector store.

from langchain_foxnose import FoxNoseLoader

loader = FoxNoseLoader(
    client=client,
    folder_path="knowledge-base",
    page_content_field="body",
    batch_size=50,
)

# Load all documents at once
docs = loader.load()

# Or iterate lazily for large folders
for doc in loader.lazy_load():
    print(doc.metadata.get("key"), doc.page_content[:100])

Agent Tool

create_foxnose_tool wraps a retriever as a LangChain tool that LLM agents can call.

from langchain_foxnose import create_foxnose_tool

tool = create_foxnose_tool(
    client=client,
    folder_path="knowledge-base",
    page_content_field="body",
    name="kb_search",
    description="Search the knowledge base for relevant information.",
    search_mode="hybrid",
    top_k=5,
)

# Use directly
result = tool.invoke("How do I reset my password?")

# Or plug into any LangChain agent
# from langgraph.prebuilt import create_react_agent
# agent = create_react_agent(llm, tools=[tool])

Async Usage

from foxnose_sdk.flux import AsyncFluxClient

async_client = AsyncFluxClient(
    base_url="https://<env_key>.fxns.io",
    api_prefix="my_api",
    auth=SimpleKeyAuth("YOUR_PUBLIC_KEY", "YOUR_SECRET_KEY"),
)

retriever = FoxNoseRetriever(
    async_client=async_client,
    folder_path="knowledge-base",
    page_content_field="body",
)

docs = await retriever.ainvoke("search query")

Documentation

License

Apache-2.0 — see LICENSE for details.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

langchain_foxnose-0.2.1.tar.gz (28.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

langchain_foxnose-0.2.1-py3-none-any.whl (17.9 kB view details)

Uploaded Python 3

File details

Details for the file langchain_foxnose-0.2.1.tar.gz.

File metadata

  • Download URL: langchain_foxnose-0.2.1.tar.gz
  • Upload date:
  • Size: 28.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for langchain_foxnose-0.2.1.tar.gz
Algorithm Hash digest
SHA256 a8d5d9d3a87d72b6fc18a44f05a42946e59a146d3886b41ae67bf1bc895438c5
MD5 05e50a8c27c5ecc17f467948c98e3cd5
BLAKE2b-256 6ea214c57231f8d0896ee6cc22eae4dde050a492272f6f92926f571306f8a587

See more details on using hashes here.

File details

Details for the file langchain_foxnose-0.2.1-py3-none-any.whl.

File metadata

File hashes

Hashes for langchain_foxnose-0.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 b494c85cce1eef892f7acdcc4b457c0f4b84c3ad6015cc1890f15dfa0c81d0b8
MD5 d63b07c8c3b9d7429b2c20a0dc8b883a
BLAKE2b-256 39b4cdeedde9994aa908bb5c73d93cdb93b176815f06604007afa46f89a5cbd9

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page