Skip to main content

Overview

FAISS (Facebook AI Similarity Search) is a library for efficient similarity search and clustering of dense vectors. It supports local file-based storage with HNSW, IVF_FLAT, and FLAT index types, plus quantization options. Provider Class: FaissProvider
Config Class: FaissConfig

Dependencies

pip install "upsonic[rag]"

Examples

from upsonic import Agent, Task, KnowledgeBase
from upsonic.embeddings.openai_provider import OpenAIEmbeddingProvider
from upsonic.vectordb import FaissProvider, FaissConfig, HNSWIndexConfig

# Setup embedding provider
embedding = OpenAIEmbeddingProvider(api_key="your-api-key")

# Create FAISS configuration
config = FaissConfig(
    collection_name="my_collection",
    vector_size=1536,
    db_path="./faiss_db",
    index=HNSWIndexConfig(m=16, ef_construction=200),
    normalize_vectors=True
)
vectordb = FaissProvider(config)

# Create knowledge base
kb = KnowledgeBase(
    sources="document.pdf",
    embedding_provider=embedding,
    vectordb=vectordb
)

# Use with Agent
agent = Agent("openai/gpt-4o")
task = Task(
    description="Search the documents",
    context=[kb]
)
result = agent.do(task)

Parameters

ParameterTypeDescriptionDefaultSource
collection_namestrName of the collection"default_collection"Base
vector_sizeintDimension of vectorsRequiredBase
distance_metricDistanceMetricSimilarity metric (COSINE, EUCLIDEAN, DOT_PRODUCT)COSINEBase
recreate_if_existsboolRecreate collection if it existsFalseBase
default_top_kintDefault number of results10Base
default_similarity_thresholdOptional[float]Minimum similarity scoreNoneBase
db_pathOptional[str]Path for persistent storageNoneSpecific
indexIndexConfigIndex type configurationHNSWIndexConfig()Specific
normalize_vectorsboolAuto-normalize vectors for cosine similarityTrueSpecific
quantization_typeOptional[Literal['scalar', 'product']]Quantization methodNoneSpecific
quantization_bitsintBits for quantization8Specific