58 lines
1.8 KiB
TypeScript
58 lines
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)
|
||
|
|
})
|
||
|
|
})
|