Skip to content

Instantly share code, notes, and snippets.

@halityurttas
Created March 22, 2025 18:12
Show Gist options
  • Select an option

  • Save halityurttas/7bc91652c90809fb7b2094d177f8ea3d to your computer and use it in GitHub Desktop.

Select an option

Save halityurttas/7bc91652c90809fb7b2094d177f8ea3d to your computer and use it in GitHub Desktop.
Vektör veritabanlarında geolokasyon bazlı yakınlığa göre sordulama

Vektör tabanlı veritabanları, coğrafi konum verilerini ve diğer yüksek boyutlu verileri etkili bir şekilde işlemek için kullanılır. Bu tür veritabanları, genellikle hızlı arama ve yakınlık sorguları için optimize edilmiştir. Örnek olarak, Faiss ve Milvus gibi vektör tabanlı veritabanları kullanılabilir.

Aşağıda, Milvus kullanarak bir geolokasyona ait konuma göre yakınlarda bulunan işletmeleri listeleyen temel bir yapı örneği sunuyorum:

Adımlar:

  1. Milvus'u kurun ve çalıştırın.
  2. Python istemcisiyle Milvus'a bağlanın.
  3. İşletme verilerini ve konum bilgilerini ekleyin.
  4. Geolokasyon sorgusu yaparak yakın işletmeleri listeleyin.

Örnek Kod:

1. Milvus'u Kurun ve Çalıştırın

Milvus'u Docker kullanarak çalıştırabilirsiniz:

docker pull milvusdb/milvus:v2.0.0
docker run -d --name milvus-standalone -p 19530:19530 milvusdb/milvus:v2.0.0

2. Python İstemcisiyle Milvus'a Bağlanın

from pymilvus import connections, FieldSchema, CollectionSchema, DataType, Collection

# Milvus'a bağlan
connections.connect(host='localhost', port='19530')

# Koleksiyon şeması tanımla
fields = [
    FieldSchema(name="business_id", dtype=DataType.INT64, is_primary=True),
    FieldSchema(name="location", dtype=DataType.FLOAT_VECTOR, dim=2)  # 2 boyutlu vektör (lat, lon)
]
schema = CollectionSchema(fields, "Business locations")

# Koleksiyon oluştur
collection = Collection(name="businesses", schema=schema)

3. İşletme Verilerini ve Konum Bilgilerini Ekleyin

import random

# İşletme verileri ekle
data = [
    [i for i in range(100)],  # İşletme kimlikleri
    [[random.uniform(-90, 90), random.uniform(-180, 180)] for _ in range(100)]  # Rastgele konumlar
]
collection.insert(data)

4. Geolokasyon Sorgusu Yaparak Yakın İşletmeleri Listeleyin

# Arama işlemi
query_location = [40.7128, -74.0060]  # Örneğin, New York City koordinatları
search_params = {
    "metric_type": "L2",
    "params": {"nprobe": 10}
}
results = collection.search([query_location], "location", search_params, limit=10)

# Sonuçları yazdır
for result in results:
    print(f"Business ID: {result.id}, Distance: {result.distance}")

Bu kod, Milvus kullanarak bir koleksiyon oluşturur, işletme verilerini ekler ve belirli bir konuma göre en yakın işletmeleri arar. Bu örnekte, işletmelerin konum bilgileri rastgele oluşturulmuştur. Gerçek bir uygulamada, bu verileri bir veri kaynağından alabilirsiniz.

Milvus ve diğer vektör tabanlı veritabanları hakkında daha fazla bilgi için resmi dokümantasyonlarına başvurabilirsiniz:

Bu örnek, temel bir başlangıç noktasıdır ve ihtiyaçlarınıza göre özelleştirilebilir.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment