Skip to main content

Overview

The search module provides powerful hybrid search capabilities for querying knowledge graphs. It supports multiple search methods (vector similarity, BM25 full-text search, breadth-first search) and various reranking strategies.

SearchConfig

The SearchConfig class defines search behavior across different graph layers (edges, nodes, episodes, communities).
EdgeSearchConfig | None
Configuration for searching edges.
NodeSearchConfig | None
Configuration for searching nodes.
EpisodeSearchConfig | None
Configuration for searching episodes.
CommunitySearchConfig | None
Configuration for searching communities.
int
default:"10"
Maximum number of results to return.
float
default:"0"
Minimum score threshold for reranked results.

EdgeSearchConfig

Configuration for edge search operations.
list[EdgeSearchMethod]
required
List of search methods to use. Options: EdgeSearchMethod.cosine_similarity, EdgeSearchMethod.bm25, EdgeSearchMethod.bfs.
EdgeReranker
default:"EdgeReranker.rrf"
Reranking strategy. Options: rrf (reciprocal rank fusion), node_distance, episode_mentions, mmr (maximal marginal relevance), cross_encoder.
float
Minimum similarity score for vector search results.
float
Lambda parameter for MMR reranking (diversity vs relevance tradeoff).
int
Maximum depth for breadth-first search.

NodeSearchConfig

Configuration for node search operations.
list[NodeSearchMethod]
required
List of search methods to use. Options: NodeSearchMethod.cosine_similarity, NodeSearchMethod.bm25, NodeSearchMethod.bfs.
NodeReranker
default:"NodeReranker.rrf"
Reranking strategy. Options: rrf, node_distance, episode_mentions, mmr, cross_encoder.
float
Minimum similarity score for vector search results.
float
Lambda parameter for MMR reranking.
int
Maximum depth for breadth-first search.

EpisodeSearchConfig

Configuration for episode search operations.
list[EpisodeSearchMethod]
required
List of search methods to use. Options: EpisodeSearchMethod.bm25.
EpisodeReranker
default:"EpisodeReranker.rrf"
Reranking strategy. Options: rrf, cross_encoder.

CommunitySearchConfig

Configuration for community search operations.
list[CommunitySearchMethod]
required
List of search methods to use. Options: CommunitySearchMethod.cosine_similarity, CommunitySearchMethod.bm25.
CommunityReranker
default:"CommunityReranker.rrf"
Reranking strategy. Options: rrf, mmr, cross_encoder.

SearchResults

Container for search results across different graph layers.
list[EntityEdge]
List of relevant entity edges.
list[float]
Reranker scores for edges (parallel to edges list).
list[EntityNode]
List of relevant entity nodes.
list[float]
Reranker scores for nodes (parallel to nodes list).
list[EpisodicNode]
List of relevant episodes.
list[float]
Reranker scores for episodes (parallel to episodes list).
list[CommunityNode]
List of relevant communities.
list[float]
Reranker scores for communities (parallel to communities list).

merge

Merge multiple SearchResults objects into a single SearchResults object.
list[SearchResults]
required
List of SearchResults objects to merge.

SearchFilters

Filters to apply when searching the graph.
list[str] | None
Filter nodes by labels.
list[str] | None
Filter edges by type names.
list[list[DateFilter]] | None
Filter by valid_at timestamp (list of OR conditions, each containing AND conditions).
list[list[DateFilter]] | None
Filter by invalid_at timestamp.
list[list[DateFilter]] | None
Filter by created_at timestamp.
list[list[DateFilter]] | None
Filter by expired_at timestamp.
list[str] | None
Filter to specific edge UUIDs.
list[PropertyFilter] | None
Filter by custom properties.

Example

DateFilter

Filter for date-based queries.
datetime | None
The datetime to filter on.
ComparisonOperator
required
Comparison operator: equals, not_equals, greater_than, less_than, greater_than_equal, less_than_equal, is_null, is_not_null.

PropertyFilter

Filter for custom property queries.
str
required
Name of the property to filter on.
str | int | float | None
Value to match on for the property.
ComparisonOperator
required
Comparison operator for the property.

Search Config Recipes

Pre-configured search configurations for common use cases.

COMBINED_HYBRID_SEARCH_CROSS_ENCODER

Performs a full-text search, similarity search, and BFS with cross_encoder reranking over edges, nodes, episodes, and communities. Best for high-accuracy results.

COMBINED_HYBRID_SEARCH_RRF

Performs a hybrid search with RRF (reciprocal rank fusion) reranking over all graph layers. Good balance of speed and accuracy.

COMBINED_HYBRID_SEARCH_MMR

Performs a hybrid search with MMR (maximal marginal relevance) reranking for diverse results.

EDGE_HYBRID_SEARCH_RRF

Performs a hybrid search over edges only with RRF reranking.

EDGE_HYBRID_SEARCH_MMR

Performs a hybrid search over edges with MMR reranking for diverse edge results.

EDGE_HYBRID_SEARCH_NODE_DISTANCE

Performs a hybrid search over edges with node distance reranking. Requires center_node_uuid parameter.

EDGE_HYBRID_SEARCH_EPISODE_MENTIONS

Performs a hybrid search over edges with reranking by episode mention count.

EDGE_HYBRID_SEARCH_CROSS_ENCODER

Performs a hybrid search over edges with cross encoder reranking for highest accuracy.

NODE_HYBRID_SEARCH_RRF

Performs a hybrid search over nodes with RRF reranking.

NODE_HYBRID_SEARCH_MMR

Performs a hybrid search over nodes with MMR reranking.

NODE_HYBRID_SEARCH_NODE_DISTANCE

Performs a hybrid search over nodes with node distance reranking.

NODE_HYBRID_SEARCH_EPISODE_MENTIONS

Performs a hybrid search over nodes with episode mention count reranking.

NODE_HYBRID_SEARCH_CROSS_ENCODER

Performs a hybrid search over nodes with cross encoder reranking.

COMMUNITY_HYBRID_SEARCH_RRF

Performs a hybrid search over communities with RRF reranking.

COMMUNITY_HYBRID_SEARCH_MMR

Performs a hybrid search over communities with MMR reranking.

COMMUNITY_HYBRID_SEARCH_CROSS_ENCODER

Performs a hybrid search over communities with cross encoder reranking.

Examples

Advanced Search with Custom Config

Search with Filters

Node Distance Reranking