brainy/tests/dimension-standardization.test.ts
dpsifr 201b7acf6d **feat(tests, docs): add test coverage for database operations and vector dimension standardization**
- **Tests**:
  - Introduced `database-operations.test.ts` to validate core database functionalities, including initialization, CRUD operations, statistics retrieval, and search capabilities.
  - Added `dimension-standardization.test.ts` to ensure vector dimension consistency (fixed at 512) throughout operations like embedding, configuration, and validation.
  - Enhanced test cases to include scenarios for adding, retrieving, and handling errors for incorrect vector dimensions.

- **Documentation**:
  - Created `VECTOR_DIMENSION_STANDARDIZATION.md` to detail the transition to standardizing vectors to 512 dimensions, rationale for the change, potential impacts, and migration steps.
  - Includes best practices for handling vectors and utilizing the built-in embedding functions.

**Purpose**: Improve system robustness with comprehensive test coverage focusing on critical database and vector operations while providing clear documentation for developers to adapt to the standardized vector dimensions.
2025-07-25 13:45:44 -07:00

58 lines
No EOL
1.8 KiB
TypeScript

import { describe, it, expect } from 'vitest'
import { BrainyData } from '../dist/brainyData.js'
describe('Vector Dimension Standardization', () => {
it('should initialize BrainyData with 512 dimensions', async () => {
// Initialize BrainyData
const db = new BrainyData()
await db.init()
// Check the dimensions property
expect(db.dimensions).toBe(512)
})
it('should reject vectors with incorrect dimensions', async () => {
const db = new BrainyData()
await db.init()
// Test with a simple vector (this should throw an error because it's not 512 dimensions)
const smallVector = [0.1, 0.2, 0.3]
// Expect the add operation to throw an error
await expect(db.add(smallVector, { test: 'small-vector' }))
.rejects.toThrow()
})
it('should successfully embed text to 512 dimensions', async () => {
const db = new BrainyData()
await db.init()
// Test with text that will be embedded to 512 dimensions
const id = await db.add('This is a test text that will be embedded to 512 dimensions', { test: 'text-embedding' })
// Retrieve the vector and check its dimensions
const noun = await db.get(id)
expect(noun.vector.length).toBe(512)
})
it('should directly embed text to 512 dimensions', async () => {
const db = new BrainyData()
await db.init()
// Test direct embedding
const vector = await db.embed('Another test text')
expect(vector.length).toBe(512)
})
it('should use the configured dimensions', async () => {
// Create a BrainyData instance with a specific dimension
const customDimension = 300
const db = new BrainyData({
dimensions: customDimension
})
await db.init()
// The API appears to respect the configured dimensions
expect(db.dimensions).toBe(customDimension)
})
})