vector.js 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. import { sql } from "../sql.js";
  2. function toSql(value) {
  3. return JSON.stringify(value);
  4. }
  5. function l2Distance(column, value) {
  6. if (Array.isArray(value)) {
  7. return sql`${column} <-> ${toSql(value)}`;
  8. }
  9. return sql`${column} <-> ${value}`;
  10. }
  11. function l1Distance(column, value) {
  12. if (Array.isArray(value)) {
  13. return sql`${column} <+> ${toSql(value)}`;
  14. }
  15. return sql`${column} <+> ${value}`;
  16. }
  17. function innerProduct(column, value) {
  18. if (Array.isArray(value)) {
  19. return sql`${column} <#> ${toSql(value)}`;
  20. }
  21. return sql`${column} <#> ${value}`;
  22. }
  23. function cosineDistance(column, value) {
  24. if (Array.isArray(value)) {
  25. return sql`${column} <=> ${toSql(value)}`;
  26. }
  27. return sql`${column} <=> ${value}`;
  28. }
  29. function hammingDistance(column, value) {
  30. if (Array.isArray(value)) {
  31. return sql`${column} <~> ${toSql(value)}`;
  32. }
  33. return sql`${column} <~> ${value}`;
  34. }
  35. function jaccardDistance(column, value) {
  36. if (Array.isArray(value)) {
  37. return sql`${column} <%> ${toSql(value)}`;
  38. }
  39. return sql`${column} <%> ${value}`;
  40. }
  41. export {
  42. cosineDistance,
  43. hammingDistance,
  44. innerProduct,
  45. jaccardDistance,
  46. l1Distance,
  47. l2Distance
  48. };
  49. //# sourceMappingURL=vector.js.map