LangChain integration for FoxNose - the knowledge layer for RAG and AI agents
Project description
langchain-foxnose
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 pipelinesFoxNoseLoader— bulk document loading with cursor-based paginationcreate_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
AsyncFluxClientfor true async when available - Structured filtering: pass FoxNose
wherefilters 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
- Getting Started
- Retriever
- Document Loader
- Search Tool
- Configuration
- Examples
- API Reference
- FoxNose 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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a8d5d9d3a87d72b6fc18a44f05a42946e59a146d3886b41ae67bf1bc895438c5
|
|
| MD5 |
05e50a8c27c5ecc17f467948c98e3cd5
|
|
| BLAKE2b-256 |
6ea214c57231f8d0896ee6cc22eae4dde050a492272f6f92926f571306f8a587
|
File details
Details for the file langchain_foxnose-0.2.1-py3-none-any.whl.
File metadata
- Download URL: langchain_foxnose-0.2.1-py3-none-any.whl
- Upload date:
- Size: 17.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b494c85cce1eef892f7acdcc4b457c0f4b84c3ad6015cc1890f15dfa0c81d0b8
|
|
| MD5 |
d63b07c8c3b9d7429b2c20a0dc8b883a
|
|
| BLAKE2b-256 |
39b4cdeedde9994aa908bb5c73d93cdb93b176815f06604007afa46f89a5cbd9
|