Jan Krukowski
Initial commit
902bb3d
import CoreML
import SQLiteVec
import Testing
@testable import EmbeddingsBenchmarkLib
func createDatabase(_ data: [[Float]]) async throws -> Database {
try SQLiteVec.initialize()
let db = try Database(.inMemory)
try await db.execute("CREATE VIRTUAL TABLE embeddings USING vec0(embedding float[3])")
for (index, row) in data.enumerated() {
try await db.execute(
"""
INSERT INTO embeddings(rowid, embedding)
VALUES (?, ?)
""",
params: [index, row]
)
}
return db
}
@Test func testEmbeddingMethods() async throws {
let data: [[Float]] = [
[1.0, 2.0, 3.0],
[4.0, 5.0, 6.0],
[7.0, 8.0, 9.0]
]
let embeddings = MLTensor(shape: [3, 3], scalars: data.flatMap { $0 })
let coreMLResult = await queryEmbeddings(embeddings: embeddings, tokenIds: [0, 2])
let db = try await createDatabase(data)
let sqliteResult = try await queryEmbeddings(
db: db,
query: "(?, ?)",
tokenIds: [0, 2],
vectorSize: 3)
#expect(coreMLResult == sqliteResult)
}