# Check index capabilities based on configuration
def analyze_index_capabilities(index):
config = index.index_config
index_name = index.index_name
index_type = index.index_type
trained = index.is_trained()
print(f"\nIndex Analysis: {index_name}")
print("=" * 40)
print(f"Type: {index_type}")
print(f"Dimensions: {config.get('dimension')}")
print(f"Metric: {config.get('metric')}")
print(f"Lists: {config.get('n_lists')}")
print(f"Trained: {'Yes' if trained else 'No'}")
# Performance characteristics
if index_type == 'ivfflat':
print('\nCharacteristics:')
print('- Highest accuracy')
print('- Slower queries')
print('- Higher memory usage')
elif index_type == 'ivfpq':
print('\nCharacteristics:')
print('- Memory efficient')
print('- Compressed vectors')
print(f"- PQ dimension: {config.get('pq_dim')}")
print(f"- Quantization bits: {config.get('pq_bits')}")
else:
print('\nCharacteristics:')
print('- Balanced performance')
print('- Good accuracy/speed tradeoff')
# Recommendations
print('\nRecommendations:')
if not trained:
print('- Train the index for optimal performance')
if config.get('n_lists', 0) < 100:
print('- Consider more lists for larger datasets')
# Usage
analyze_index_capabilities(index)