drizzle-team / drizzle-team/drizzle-orm

[FEATURE]: Implement CREATE VECTOR INDEX for MySQL

Open
#3,695 0 comments 9 reactions 0 assignees View on GitHub
db/mysql drizzle/kit enhancement
Dominant language
TypeScript
Stars
35.8k
Forks
1.6k
Avg merge
2d 7h
Merged PRs (30d)
4

Description

### Feature hasn't been suggested before.

- [X] I have verified this feature I'm about to request hasn't been suggested before.

### Describe the enhancement you want to request

MySQL 9.0 is shipping with the VECTOR column type. Some MySQL providers have already start giving early access too. Additionally, Oracle has documented a VECTOR INDEX in the new version: https://docs.oracle.com/en/database/oracle/oracle-database/23/sqlrf/create-vector-index.html

PlanetScale also supports this syntax, but there's no way of defining it with Drizzle.

```typescript
import { datetime, index, mediumtext, mysqlTable, varchar } from 'drizzle-orm/mysql-core';

const myTable = mysqlTable('my_table', {
// a custom type implementing the VECTOR column type
embedding: vector('embedding', { length: 1024 }),
}, (table) => ({
embeddingIdx: vectorIndex('embedding_idx').on(table.embedding),
});
```

Equivalent SQL:

```sql
CREATE VECTOR INDEX embedding_idx ON my_table(embedding);
```

It's currently not possible even if trying to use raw SQL to define the index, so it's a bit of a blocker.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.