|
|
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




Немає коментарів:
Дописати коментар