CLI: Semantic Search¶
← CLI Reference | API Documentation
This document describes CLI commands for semantic search operations and their Python API equivalents.
Semantic search enables finding documents by meaning rather than exact keyword matches, using AI embeddings.
search init - Initialize semantic search¶
Initialize the semantic search system with an embedding provider.
CLI:
# Initialize with OpenAI
nexus search init --provider openai --model text-embedding-3-small
# Initialize with mock provider (testing)
nexus search init --provider mock
Python API:
# Initialize with OpenAI
nx.init_semantic_search(provider="openai", model="text-embedding-3-small")
# Initialize with mock provider
nx.init_semantic_search(provider="mock")
# With custom API key
nx.init_semantic_search(
provider="openai",
model="text-embedding-3-small",
api_key="your-api-key"
)
Options: - --provider TEXT: Embedding provider (openai, mock) - --model TEXT: Model name (e.g., text-embedding-3-small) - --api-key TEXT: API key for the provider
See Also: - Python API: init_semantic_search()
search index - Index documents¶
Index documents for semantic search.
CLI:
# Index all documents
nexus search index
# Index specific path
nexus search index /docs
# Index single file
nexus search index /docs/README.md
Python API:
# Index all documents
await nx.index_documents()
# Index specific path
await nx.index_documents(path="/docs")
# Index single file
await nx.index_documents(path="/docs/README.md")
# Index with progress tracking
async def index_with_progress():
result = await nx.index_documents(path="/docs")
print(f"Indexed {result['indexed_count']} documents")
print(f"Failed: {result['failed_count']}")
Options: - path: Path to index (default: all documents)
See Also: - Python API: index_documents()
search query - Search documents¶
Search indexed documents semantically.
CLI:
# Basic search
nexus search query "How does authentication work?"
# Limit results
nexus search query "database migration" --limit 5
# Search in specific path
nexus search query "API endpoints" --path /docs
Python API:
# Basic search (async)
import asyncio
async def search():
results = await nx.semantic_search("How does authentication work?")
for result in results:
print(f"{result['path']}: {result['score']}")
print(f" {result['snippet']}")
asyncio.run(search())
# Limit results
async def search_top():
results = await nx.semantic_search("database migration", limit=5)
return results
# Search in specific path
async def search_docs():
results = await nx.semantic_search("API endpoints", path="/docs")
for result in results:
print(f"{result['path']}: {result['content'][:100]}...")
Options: - --limit NUM: Maximum number of results (default: 10) - --path TEXT: Search within specific path
See Also: - Python API: semantic_search()
search stats - Show statistics¶
Display semantic search indexing statistics.
CLI:
Python API:
# Get search statistics
stats = nx.get_search_stats()
print(f"Indexed documents: {stats['document_count']}")
print(f"Total embeddings: {stats['embedding_count']}")
print(f"Last indexed: {stats['last_indexed_at']}")
See Also: - Python API: get_search_stats()
Common Workflows¶
Set up semantic search¶
# Initialize search
nexus search init --provider openai --model text-embedding-3-small
# Index all documents
nexus search index /
# Check stats
nexus search stats
# Search
nexus search query "authentication best practices"
Python equivalent¶
import nexus
import asyncio
# Initialize
nx = nexus.Nexus(data_dir="./nexus-data")
# Set up semantic search
nx.init_semantic_search(provider="openai", model="text-embedding-3-small")
# Index documents
async def setup_search():
# Index all documents
result = await nx.index_documents(path="/")
print(f"Indexed {result['indexed_count']} documents")
# Check stats
stats = nx.get_search_stats()
print(f"Total documents: {stats['document_count']}")
# Search
results = await nx.semantic_search("authentication best practices")
for result in results:
print(f"\n{result['path']} (score: {result['score']:.3f})")
print(result['snippet'])
asyncio.run(setup_search())
Incremental indexing¶
# Index new documentation
nexus search index /docs/new
# Update existing index
nexus search index /docs/updated-file.md
# Search updated content
nexus search query "new feature documentation"
Python equivalent¶
async def incremental_indexing():
# Index new documentation
await nx.index_documents(path="/docs/new")
# Update existing index
await nx.index_documents(path="/docs/updated-file.md")
# Search updated content
results = await nx.semantic_search("new feature documentation")
for result in results:
print(f"{result['path']}: {result['score']:.3f}")
asyncio.run(incremental_indexing())