Hãy tưởng tượng tôi có một bảng lưu trữ một loạt các vectơ thưa thớt. Một vectơ thưa thớt có nghĩa là nó chỉ lưu trữ các giá trị khác không rõ ràng trong cấu trúc dữ liệu. Tôi có thể có một véc tơ 1 triệu chiều, nhưng tôi chỉ lưu trữ các giá trị cho các kích thước không đồng nhất. Vì vậy, kích thước tỷ lệ thuận với số lượng các mục nhập không đồng bộ, không phải là chiều của vector.Sản phẩm thưa thớt trong SQL
định nghĩa Bảng sẽ là một cái gì đó như thế này: vector_id: int chiều: int giá trị: float
Bây giờ, trong đất lập trình bình thường tôi có thể tính toán các sản phẩm bên trong hoặc chấm sản phẩm của hai vectơ trong thời gian O (| v1 | + | v2 |) thời gian. Về cơ bản, thuật toán là lưu trữ các vectơ thưa thớt được sắp xếp theo thứ nguyên và lặp qua các thứ nguyên trong mỗi cho đến khi bạn tìm thấy xung đột giữa các thứ nguyên và nhân các giá trị của thứ nguyên được chia sẻ và tiếp tục thêm các giá trị đó cho đến khi bạn kết thúc một trong hai vectơ .
Cách nhanh nhất để gỡ bỏ điều này trong SQL là gì?
Vậy làm thế nào phải không index bảng? Bởi (vector_id, kích thước)? –
Việc lập chỉ mục theo (vector_id, thứ nguyên) có ý nghĩa nhất, vì chúng nên xác định một bản ghi duy nhất trong bảng. – dpmattingly
Điều này về cơ bản là những gì tôi nghĩ ra - cho đến khi bất kỳ ai khác đăng nhanh hơn tôi sẽ đưa cho bạn. Cảm ơn! –