MYCSS

2026-03-28

DEMO Django application of usage library 'django-mariadb-vector' (MariaDB Vector)

pip install django-mariadb-vector

📒 Django MariaDB Vector DEMO application 

A minimal demo project showing how to build article recommendations using vector similarity in Django with MariaDB as the database.

The app stores articles, embeds their content into vectors, and then finds similar articles based on vector distance.

🔗 Repo: https://github.com/lexxai/django-mariadb-vector-demo
🔗 Examples: https://github.com/lexxai/django-mariadb-vector-demo/tree/main/docs
🔗 Repo library: https://github.com/lexxai/django-mariadb-vector


Features

  • Django application using MariaDB as the primary database
  • Article model with text content
  • Vector-based similarity search for recommendations
  • Simple UI:
  • List of all articles
    • "Similar articles" view for a selected article
    • Admin interface to add and manage articles

Features Demonstrated:

  • MariaDBVectorField: Storing vector embeddings as a specialized field in Django models.
  • MariaDBVectorIndex: Creating HNSW (Hierarchical Navigable Small World) indexes for efficient similarity search.
  • RecommendationManager: Using a custom manager to perform similar_to() queries based on vector similarity.

Examples

List of all articles

List of articles similar to Article with pk=1

Adding new article data through the Django admin


Simple example of usage:

!pip install django-mariadb-vector

from django.db import models
from django_mariadb_vector import MariaDBVectorField, MariaDBVectorIndex, VecDistance


class MyModel(models.Model):
    embedding = MariaDBVectorField(dimensions=3)

    class Meta:
        indexes = [
            # Vector index (MariaDB 11.8.2+)
            MariaDBVectorIndex(fields=["embedding"], dimensions=3)
        ]

# Find 5 most similar records to a reference vector
reference_vector = [0.1, 0.2, 0.3]
results = MyModel.objects.annotate(
    distance=VecDistance("embedding", reference_vector)
).order_by("distance")[:5]

Using a Recommendation Manager can simplify vector searches in your application: 

models.py:
from django.db import models

from django_mariadb_vector import MariaDBVectorField, MariaDBVectorIndex
from django_mariadb_vector.managers import RecommendationManager


class MyModel(models.Model):
    embedding = MariaDBVectorField(dimensions=3)
    
    objects = RecommendationManager(vector_field="embedding")
    
    class Meta:
        indexes = [
            # Vector index (MariaDB 11.8.2+)
            MariaDBVectorIndex(fields=["embedding"], dimensions=3, m=16),
        ]

reference vector:

from .models import MyModel

reference_vector:list[float] = [0.1, 0.2, 0.3]

# Find 5 most similar records to a reference vector
results = MyModel.objects.similar_to_vector(reference_vector, limit=5)

for item in results:
    print(f"{item.name} - Distance: {item.distance}")

reference id:

from .models import MyModel

reference_id:int = 1
# Find 5 most similar records to a reference object by id
results = MyModel.objects.similar_to(reference_id, limit=5)

for item in results:
    print(f"{item.name} - Distance: {item.distance}")  
#Django #MairaDB #VectorDatabase #DjangoORM

Немає коментарів:

Коли забув ти рідну мову, біднієш духом ти щодня...
When you forgot your native language you would become a poor at spirit every day ...

Д.Білоус / D.Bilous
Рабів до раю не пускають. Будь вільним!

ipv6 ready