-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdb_config.py
More file actions
70 lines (57 loc) · 2.24 KB
/
Copy pathdb_config.py
File metadata and controls
70 lines (57 loc) · 2.24 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
# Ficheiro: db_config.py
# Descrição: Configuração da ligação à base de dados vetorial Milvus
from pymilvus import MilvusClient
import pymilvus
def get_client():
"""
Cria e retorna um cliente de ligação ao Milvus.
Returns:
MilvusClient: Cliente para interação com o Milvus.
"""
return MilvusClient(uri="http://localhost:19530")
def init_database():
"""
Inicializa a base de dados e cria a coleção de áudio.
Returns:
MilvusClient: Cliente conectado ao Milvus.
"""
client = get_client()
# Verifica se a ligação está a funcionar
connection_ok = client.list_collections() is not None
print("Ligado ao Milvus:", connection_ok)
# Verifica se a coleção existe
if client.has_collection("audio_collection"):
# Se existir, vamos eliminá-la para recriá-la com a dimensão correta
print("A eliminar coleção anterior para recriação...")
client.drop_collection("audio_collection")
# Cria a coleção para os vetores de áudio
print("A criar nova coleção com dimensão 768...")
client.create_collection(
collection_name="audio_collection",
dimension=768, # Dimensão do vetor de embeddings para Wav2Vec2
metric_type="COSINE", # Métrica de similaridade (cosseno)
# Definir explicitamente que o campo ID é inteiro
primary_field_name="id",
primary_field_type=pymilvus.DataType.INT64
)
print("Coleção de áudio criada!")
# Criar alguns dados de teste
test_vectors = [
{"id": 1, "vector": [0.1] * 768, "filename": "teste1.mp3"},
{"id": 2, "vector": [0.2] * 768, "filename": "teste2.mp3"},
{"id": 3, "vector": [0.3] * 768, "filename": "teste3.mp3"}
]
# Inserir dados de teste
client.insert(
collection_name="audio_collection",
data=test_vectors
)
print("Dados de teste inseridos!")
# Mostrar contagem de registos
count = client.get_collection_stats("audio_collection")
print(f"Total de registos: {count['row_count']}")
return client
# Executar se o script for executado diretamente
if __name__ == "__main__":
init_database()
print("Base de dados inicializada com sucesso.")