ollama-ruby 0.12.1 → 0.14.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (46) hide show
  1. checksums.yaml +4 -4
  2. data/.yardopts +1 -0
  3. data/CHANGES.md +39 -0
  4. data/README.md +70 -144
  5. data/Rakefile +5 -17
  6. data/bin/ollama_cli +37 -6
  7. data/lib/ollama/client/command.rb +2 -2
  8. data/lib/ollama/dto.rb +4 -0
  9. data/lib/ollama/version.rb +1 -1
  10. data/lib/ollama.rb +0 -11
  11. data/ollama-ruby.gemspec +11 -22
  12. data/spec/ollama/message_spec.rb +9 -0
  13. metadata +25 -255
  14. data/bin/ollama_chat +0 -1248
  15. data/config/redis.conf +0 -5
  16. data/docker-compose.yml +0 -10
  17. data/lib/ollama/documents/cache/common.rb +0 -36
  18. data/lib/ollama/documents/cache/memory_cache.rb +0 -44
  19. data/lib/ollama/documents/cache/records.rb +0 -87
  20. data/lib/ollama/documents/cache/redis_backed_memory_cache.rb +0 -39
  21. data/lib/ollama/documents/cache/redis_cache.rb +0 -68
  22. data/lib/ollama/documents/cache/sqlite_cache.rb +0 -215
  23. data/lib/ollama/documents/splitters/character.rb +0 -72
  24. data/lib/ollama/documents/splitters/semantic.rb +0 -91
  25. data/lib/ollama/documents.rb +0 -184
  26. data/lib/ollama/utils/cache_fetcher.rb +0 -38
  27. data/lib/ollama/utils/chooser.rb +0 -52
  28. data/lib/ollama/utils/colorize_texts.rb +0 -65
  29. data/lib/ollama/utils/fetcher.rb +0 -175
  30. data/lib/ollama/utils/file_argument.rb +0 -34
  31. data/lib/ollama/utils/math.rb +0 -48
  32. data/lib/ollama/utils/tags.rb +0 -67
  33. data/spec/assets/embeddings.json +0 -1
  34. data/spec/assets/prompt.txt +0 -1
  35. data/spec/ollama/documents/cache/memory_cache_spec.rb +0 -97
  36. data/spec/ollama/documents/cache/redis_backed_memory_cache_spec.rb +0 -118
  37. data/spec/ollama/documents/cache/redis_cache_spec.rb +0 -121
  38. data/spec/ollama/documents/cache/sqlite_cache_spec.rb +0 -141
  39. data/spec/ollama/documents/splitters/character_spec.rb +0 -110
  40. data/spec/ollama/documents/splitters/semantic_spec.rb +0 -56
  41. data/spec/ollama/documents_spec.rb +0 -162
  42. data/spec/ollama/utils/cache_fetcher_spec.rb +0 -43
  43. data/spec/ollama/utils/colorize_texts_spec.rb +0 -13
  44. data/spec/ollama/utils/fetcher_spec.rb +0 -137
  45. data/spec/ollama/utils/file_argument_spec.rb +0 -17
  46. data/spec/ollama/utils/tags_spec.rb +0 -53
@@ -1 +0,0 @@
1
- [[-0.009,-0.0,-0.035,-0.002,-0.044,-0.063,0.1,0.03,0.052,-0.06,-0.027,0.012,0.03,-0.04,-0.013,0.023,-0.028,0.015,-0.066,-0.032,0.052,0.028,0.063,0.037,-0.005,-0.024,0.006,0.008,0.014,-0.007,-0.042,-0.018,0.012,-0.061,-0.03,0.004,-0.019,0.003,0.065,0.058,0.004,-0.032,0.023,-0.016,0.03,-0.009,-0.022,-0.026,0.057,-0.013,0.002,0.004,-0.059,-0.047,0.084,0.085,0.048,-0.008,0.11,0.041,-0.018,0.071,-0.022,-0.067,0.015,-0.031,0.037,-0.034,0.032,0.121,0.063,0.003,-0.016,-0.007,0.011,0.093,0.056,-0.054,0.028,0.014,-0.008,-0.102,-0.072,-0.042,0.025,0.005,-0.005,-0.083,-0.008,0.018,-0.076,0.07,0.03,0.003,-0.029,0.021,0.016,0.036,-0.101,0.194,-0.01,-0.014,0.07,-0.004,0.001,-0.087,0.001,-0.0,0.02,0.0,-0.061,-0.108,-0.039,0.068,-0.015,0.033,0.008,0.044,0.016,-0.017,-0.034,-0.018,0.023,-0.018,-0.031,-0.068,0.021,0.0,-0.006,0.032,-0.019,0.019,-0.004,0.063,-0.018,-0.057,0.021,-0.054,-0.047,0.035,-0.113,-0.005,0.065,0.033,-0.018,0.055,-0.033,0.01,-0.095,0.008,0.008,0.053,-0.03,-0.036,0.068,-0.128,-0.011,0.034,-0.022,0.01,-0.012,0.033,-0.016,0.127,0.081,-0.028,-0.07,0.004,-0.067,0.063,-0.056,0.025,-0.014,0.094,-0.012,-0.016,0.065,0.045,0.082,0.001,-0.023,0.014,-0.04,-0.002,0.024,0.001,0.03,0.051,-0.017,-0.071,0.108,-0.028,0.004,-0.048,-0.026,0.041,-0.038,0.05,0.002,-0.027,-0.005,0.019,-0.045,-0.077,-0.16,0.021,0.05,-0.068,0.069,-0.045,0.041,-0.091,-0.024,0.025,-0.052,-0.046,0.066,-0.114,-0.002,0.004,0.063,-0.056,-0.004,0.0,0.071,0.08,0.022,-0.087,-0.02,-0.078,0.002,0.081,-0.038,-0.001,-0.072,0.003,0.014,0.005,0.022,-0.008,0.094,0.011,0.068,-0.013,-0.015,-0.046,0.055,0.013,-0.004,-0.001,-0.015,0.01,-0.014,0.013,-0.036,-0.007,-0.07,-0.061,-0.08,0.018,0.005,-0.001,-0.017,0.027,0.031,-0.023,0.001,0.167,-0.007,-0.031,0.035,0.032,-0.009,0.122,-0.037,-0.032,-0.011,0.018,-0.042,0.051,-0.002,-0.081,0.06,-0.009,0.061,0.065,-0.037,0.076,0.05,0.083,-0.026,0.034,-0.097,-0.016,0.116,0.026,-0.173,0.011,0.051,-0.055,0.013,0.045,-0.017,-0.121,-0.071,-0.025,0.075,-0.031,0.047,0.062,0.05,0.101,-0.036,-0.018,0.051,-0.072,0.004,-0.023,0.019,0.0,-0.024,0.073,0.018,-0.063,0.079,0.012,-0.076,-0.006,-0.009,0.002,-0.025,0.063,-0.011,0.104,0.004,0.025,0.009,-0.071,-0.032,-0.051,-0.096,-0.072,-0.116,-0.06,-0.035,-0.021,0.016,0.045,0.014,0.036,-0.03,0.009,-0.091,-0.045,0.02,-0.105,-0.006,0.046,-0.028,-0.116,-0.078,-0.013,0.019,0.004,-0.05,0.023,0.046,-0.03,-0.021,0.001,0.022,0.02,-0.015,0.059,0.132,0.022,-0.01,-0.003,-0.002,0.021,0.052,-0.023,0.017,0.009],[-0.009,-0.0,-0.035,-0.002,-0.044,-0.063,0.1,0.03,0.052,-0.06,-0.027,0.012,0.03,-0.04,-0.013,0.023,-0.028,0.015,-0.066,-0.032,0.052,0.028,0.063,0.037,-0.005,-0.024,0.006,0.008,0.014,-0.007,-0.042,-0.018,0.012,-0.061,-0.03,0.004,-0.019,0.003,0.065,0.058,0.004,-0.032,0.023,-0.016,0.03,-0.009,-0.022,-0.026,0.057,-0.013,0.002,0.004,-0.059,-0.047,0.084,0.085,0.048,-0.008,0.11,0.041,-0.018,0.071,-0.022,-0.067,0.015,-0.031,0.037,-0.034,0.032,0.121,0.063,0.003,-0.016,-0.007,0.011,0.093,0.056,-0.054,0.028,0.014,-0.008,-0.102,-0.072,-0.042,0.025,0.005,-0.005,-0.083,-0.008,0.018,-0.076,0.07,0.03,0.003,-0.029,0.021,0.016,0.036,-0.101,0.194,-0.01,-0.014,0.07,-0.004,0.001,-0.087,0.001,-0.0,0.02,0.0,-0.061,-0.108,-0.039,0.068,-0.015,0.033,0.008,0.044,0.016,-0.017,-0.034,-0.018,0.023,-0.018,-0.031,-0.068,0.021,0.0,-0.006,0.032,-0.019,0.019,-0.004,0.063,-0.018,-0.057,0.021,-0.054,-0.047,0.035,-0.113,-0.005,0.065,0.033,-0.018,0.055,-0.033,0.01,-0.095,0.008,0.008,0.053,-0.03,-0.036,0.068,-0.128,-0.011,0.034,-0.022,0.01,-0.012,0.033,-0.016,0.127,0.081,-0.028,-0.07,0.004,-0.067,0.063,-0.056,0.025,-0.014,0.094,-0.012,-0.016,0.065,0.045,0.082,0.001,-0.023,0.014,-0.04,-0.002,0.024,0.001,0.03,0.051,-0.017,-0.071,0.108,-0.028,0.004,-0.048,-0.026,0.041,-0.038,0.05,0.002,-0.027,-0.005,0.019,-0.045,-0.077,-0.16,0.021,0.05,-0.068,0.069,-0.045,0.041,-0.091,-0.024,0.025,-0.052,-0.046,0.066,-0.114,-0.002,0.004,0.063,-0.056,-0.004,0.0,0.071,0.08,0.022,-0.087,-0.02,-0.078,0.002,0.081,-0.038,-0.001,-0.072,0.003,0.014,0.005,0.022,-0.008,0.094,0.011,0.068,-0.013,-0.015,-0.046,0.055,0.013,-0.004,-0.001,-0.015,0.01,-0.014,0.013,-0.036,-0.007,-0.07,-0.061,-0.08,0.018,0.005,-0.001,-0.017,0.027,0.031,-0.023,0.001,0.167,-0.007,-0.031,0.035,0.032,-0.009,0.122,-0.037,-0.032,-0.011,0.018,-0.042,0.051,-0.002,-0.081,0.06,-0.009,0.061,0.065,-0.037,0.076,0.05,0.083,-0.026,0.034,-0.097,-0.016,0.116,0.026,-0.173,0.011,0.051,-0.055,0.013,0.045,-0.017,-0.121,-0.071,-0.025,0.075,-0.031,0.047,0.062,0.05,0.101,-0.036,-0.018,0.051,-0.072,0.004,-0.023,0.019,0.0,-0.024,0.073,0.018,-0.063,0.079,0.012,-0.076,-0.006,-0.009,0.002,-0.025,0.063,-0.011,0.104,0.004,0.025,0.009,-0.071,-0.032,-0.051,-0.096,-0.072,-0.116,-0.06,-0.035,-0.021,0.016,0.045,0.014,0.036,-0.03,0.009,-0.091,-0.045,0.02,-0.105,-0.006,0.046,-0.028,-0.116,-0.078,-0.013,0.019,0.004,-0.05,0.023,0.046,-0.03,-0.021,0.001,0.022,0.02,-0.015,0.059,0.132,0.022,-0.01,-0.003,-0.002,0.021,0.052,-0.023,0.017,0.009],[-0.009,-0.0,-0.035,-0.002,-0.044,-0.063,0.1,0.03,0.052,-0.06,-0.027,0.012,0.03,-0.04,-0.013,0.023,-0.028,0.015,-0.066,-0.032,0.052,0.028,0.063,0.037,-0.005,-0.024,0.006,0.008,0.014,-0.007,-0.042,-0.018,0.012,-0.061,-0.03,0.004,-0.019,0.003,0.065,0.058,0.004,-0.032,0.023,-0.016,0.03,-0.009,-0.022,-0.026,0.057,-0.013,0.002,0.004,-0.059,-0.047,0.084,0.085,0.048,-0.008,0.11,0.041,-0.018,0.071,-0.022,-0.067,0.015,-0.031,0.037,-0.034,0.032,0.121,0.063,0.003,-0.016,-0.007,0.011,0.093,0.056,-0.054,0.028,0.014,-0.008,-0.102,-0.072,-0.042,0.025,0.005,-0.005,-0.083,-0.008,0.018,-0.076,0.07,0.03,0.003,-0.029,0.021,0.016,0.036,-0.101,0.194,-0.01,-0.014,0.07,-0.004,0.001,-0.087,0.001,-0.0,0.02,0.0,-0.061,-0.108,-0.039,0.068,-0.015,0.033,0.008,0.044,0.016,-0.017,-0.034,-0.018,0.023,-0.018,-0.031,-0.068,0.021,0.0,-0.006,0.032,-0.019,0.019,-0.004,0.063,-0.018,-0.057,0.021,-0.054,-0.047,0.035,-0.113,-0.005,0.065,0.033,-0.018,0.055,-0.033,0.01,-0.095,0.008,0.008,0.053,-0.03,-0.036,0.068,-0.128,-0.011,0.034,-0.022,0.01,-0.012,0.033,-0.016,0.127,0.081,-0.028,-0.07,0.004,-0.067,0.063,-0.056,0.025,-0.014,0.094,-0.012,-0.016,0.065,0.045,0.082,0.001,-0.023,0.014,-0.04,-0.002,0.024,0.001,0.03,0.051,-0.017,-0.071,0.108,-0.028,0.004,-0.048,-0.026,0.041,-0.038,0.05,0.002,-0.027,-0.005,0.019,-0.045,-0.077,-0.16,0.021,0.05,-0.068,0.069,-0.045,0.041,-0.091,-0.024,0.025,-0.052,-0.046,0.066,-0.114,-0.002,0.004,0.063,-0.056,-0.004,0.0,0.071,0.08,0.022,-0.087,-0.02,-0.078,0.002,0.081,-0.038,-0.001,-0.072,0.003,0.014,0.005,0.022,-0.008,0.094,0.011,0.068,-0.013,-0.015,-0.046,0.055,0.013,-0.004,-0.001,-0.015,0.01,-0.014,0.013,-0.036,-0.007,-0.07,-0.061,-0.08,0.018,0.005,-0.001,-0.017,0.027,0.031,-0.023,0.001,0.167,-0.007,-0.031,0.035,0.032,-0.009,0.122,-0.037,-0.032,-0.011,0.018,-0.042,0.051,-0.002,-0.081,0.06,-0.009,0.061,0.065,-0.037,0.076,0.05,0.083,-0.026,0.034,-0.097,-0.016,0.116,0.026,-0.173,0.011,0.051,-0.055,0.013,0.045,-0.017,-0.121,-0.071,-0.025,0.075,-0.031,0.047,0.062,0.05,0.101,-0.036,-0.018,0.051,-0.072,0.004,-0.023,0.019,0.0,-0.024,0.073,0.018,-0.063,0.079,0.012,-0.076,-0.006,-0.009,0.002,-0.025,0.063,-0.011,0.104,0.004,0.025,0.009,-0.071,-0.032,-0.051,-0.096,-0.072,-0.116,-0.06,-0.035,-0.021,0.016,0.045,0.014,0.036,-0.03,0.009,-0.091,-0.045,0.02,-0.105,-0.006,0.046,-0.028,-0.116,-0.078,-0.013,0.019,0.004,-0.05,0.023,0.046,-0.03,-0.021,0.001,0.022,0.02,-0.015,0.059,0.132,0.022,-0.01,-0.003,-0.002,0.021,0.052,-0.023,0.017,0.009],[-0.003,-0.038,-0.045,0.046,-0.102,-0.023,0.163,0.003,0.041,-0.042,-0.026,-0.083,0.078,-0.014,-0.057,-0.018,0.034,0.022,-0.025,-0.026,-0.071,0.043,-0.062,0.067,-0.012,0.032,0.025,-0.009,-0.046,-0.135,0.026,0.067,0.036,-0.041,0.038,-0.023,0.021,0.026,0.025,-0.019,-0.01,-0.081,0.029,0.08,-0.012,-0.001,0.067,-0.012,0.044,-0.042,-0.009,-0.039,-0.065,0.078,0.041,0.087,-0.023,0.046,0.056,-0.025,-0.047,0.068,0.01,0.019,0.0,0.036,-0.061,-0.014,-0.012,-0.019,0.033,0.033,0.023,0.072,0.037,0.016,0.064,0.038,0.129,-0.029,-0.119,-0.086,-0.025,-0.006,-0.011,0.028,-0.016,-0.061,-0.08,0.019,0.026,0.045,0.058,0.002,-0.123,-0.047,-0.0,-0.029,-0.029,0.163,0.016,0.011,-0.031,-0.029,0.05,-0.093,0.036,-0.011,-0.008,0.014,0.003,-0.074,-0.017,0.004,0.039,-0.053,-0.025,0.031,0.047,-0.023,-0.009,0.08,-0.031,-0.049,-0.15,0.012,-0.007,0.0,0.02,-0.068,0.069,0.07,-0.043,0.048,-0.092,-0.012,-0.027,0.017,-0.026,0.008,-0.006,0.02,0.132,0.001,-0.086,-0.017,-0.021,0.039,-0.083,0.04,-0.021,0.122,-0.01,-0.053,0.057,-0.07,-0.041,0.062,0.004,-0.033,-0.041,-0.018,0.008,-0.074,0.024,-0.012,-0.052,-0.039,0.011,-0.062,-0.087,-0.064,0.048,0.061,0.074,0.073,-0.044,0.04,-0.002,-0.034,0.037,0.051,-0.001,-0.005,0.016,0.009,-0.001,0.12,0.061,0.094,0.037,-0.052,-0.037,-0.028,0.016,-0.075,-0.006,-0.128,-0.031,-0.026,0.061,0.017,-0.038,0.021,-0.045,-0.055,-0.066,-0.007,-0.03,-0.019,0.044,-0.018,-0.036,0.04,-0.007,-0.102,0.008,0.049,-0.135,-0.006,0.079,-0.002,-0.039,0.0,0.029,-0.087,-0.023,0.024,-0.036,-0.038,0.027,-0.04,0.064,0.028,-0.056,-0.043,0.044,-0.041,0.033,0.004,0.015,0.007,-0.019,0.056,-0.04,0.012,-0.089,0.063,-0.071,0.088,0.027,0.014,0.09,0.006,0.013,0.017,-0.016,-0.001,-0.082,0.079,0.053,0.0,-0.03,-0.044,-0.061,0.033,-0.03,0.081,0.05,0.013,0.036,0.029,-0.01,0.048,-0.106,-0.021,-0.049,0.043,-0.047,-0.043,-0.037,0.027,0.098,-0.017,0.04,0.024,0.049,0.036,-0.005,-0.005,-0.01,-0.002,-0.05,-0.049,0.105,0.077,-0.073,0.042,0.028,0.074,-0.001,0.002,-0.05,0.087,-0.02,0.029,-0.018,0.066,-0.027,-0.015,0.039,0.031,0.001,-0.055,-0.018,0.021,-0.031,-0.061,0.029,0.0,0.014,0.031,0.003,0.033,0.071,-0.007,0.077,0.067,0.014,0.004,0.055,0.038,-0.009,0.091,0.073,0.028,-0.006,-0.04,-0.008,0.027,0.006,0.0,0.016,-0.056,-0.052,-0.055,-0.032,0.024,0.071,0.023,0.055,0.107,-0.057,-0.124,0.001,0.004,-0.013,0.077,0.02,-0.007,-0.029,-0.037,0.006,-0.052,-0.046,-0.113,0.037,0.002,-0.02,-0.036,-0.059,0.1,0.042,0.007,0.068,0.047,-0.036,-0.011,-0.078,0.084,0.033,-0.053,0.011,-0.054],[-0.003,-0.038,-0.045,0.046,-0.102,-0.023,0.163,0.003,0.041,-0.042,-0.026,-0.083,0.078,-0.014,-0.057,-0.018,0.034,0.022,-0.025,-0.026,-0.071,0.043,-0.062,0.067,-0.012,0.032,0.025,-0.009,-0.046,-0.135,0.026,0.067,0.036,-0.041,0.038,-0.023,0.021,0.026,0.025,-0.019,-0.01,-0.081,0.029,0.08,-0.012,-0.001,0.067,-0.012,0.044,-0.042,-0.009,-0.039,-0.065,0.078,0.041,0.087,-0.023,0.046,0.056,-0.025,-0.047,0.068,0.01,0.019,0.0,0.036,-0.061,-0.014,-0.012,-0.019,0.033,0.033,0.023,0.072,0.037,0.016,0.064,0.038,0.129,-0.029,-0.119,-0.086,-0.025,-0.006,-0.011,0.028,-0.016,-0.061,-0.08,0.019,0.026,0.045,0.058,0.002,-0.123,-0.047,-0.0,-0.029,-0.029,0.163,0.016,0.011,-0.031,-0.029,0.05,-0.093,0.036,-0.011,-0.008,0.014,0.003,-0.074,-0.017,0.004,0.039,-0.053,-0.025,0.031,0.047,-0.023,-0.009,0.08,-0.031,-0.049,-0.15,0.012,-0.007,0.0,0.02,-0.068,0.069,0.07,-0.043,0.048,-0.092,-0.012,-0.027,0.017,-0.026,0.008,-0.006,0.02,0.132,0.001,-0.086,-0.017,-0.021,0.039,-0.083,0.04,-0.021,0.122,-0.01,-0.053,0.057,-0.07,-0.041,0.062,0.004,-0.033,-0.041,-0.018,0.008,-0.074,0.024,-0.012,-0.052,-0.039,0.011,-0.062,-0.087,-0.064,0.048,0.061,0.074,0.073,-0.044,0.04,-0.002,-0.034,0.037,0.051,-0.001,-0.005,0.016,0.009,-0.001,0.12,0.061,0.094,0.037,-0.052,-0.037,-0.028,0.016,-0.075,-0.006,-0.128,-0.031,-0.026,0.061,0.017,-0.038,0.021,-0.045,-0.055,-0.066,-0.007,-0.03,-0.019,0.044,-0.018,-0.036,0.04,-0.007,-0.102,0.008,0.049,-0.135,-0.006,0.079,-0.002,-0.039,0.0,0.029,-0.087,-0.023,0.024,-0.036,-0.038,0.027,-0.04,0.064,0.028,-0.056,-0.043,0.044,-0.041,0.033,0.004,0.015,0.007,-0.019,0.056,-0.04,0.012,-0.089,0.063,-0.071,0.088,0.027,0.014,0.09,0.006,0.013,0.017,-0.016,-0.001,-0.082,0.079,0.053,0.0,-0.03,-0.044,-0.061,0.033,-0.03,0.081,0.05,0.013,0.036,0.029,-0.01,0.048,-0.106,-0.021,-0.049,0.043,-0.047,-0.043,-0.037,0.027,0.098,-0.017,0.04,0.024,0.049,0.036,-0.005,-0.005,-0.01,-0.002,-0.05,-0.049,0.105,0.077,-0.073,0.042,0.028,0.074,-0.001,0.002,-0.05,0.087,-0.02,0.029,-0.018,0.066,-0.027,-0.015,0.039,0.031,0.001,-0.055,-0.018,0.021,-0.031,-0.061,0.029,0.0,0.014,0.031,0.003,0.033,0.071,-0.007,0.077,0.067,0.014,0.004,0.055,0.038,-0.009,0.091,0.073,0.028,-0.006,-0.04,-0.008,0.027,0.006,0.0,0.016,-0.056,-0.052,-0.055,-0.032,0.024,0.071,0.023,0.055,0.107,-0.057,-0.124,0.001,0.004,-0.013,0.077,0.02,-0.007,-0.029,-0.037,0.006,-0.052,-0.046,-0.113,0.037,0.002,-0.02,-0.036,-0.059,0.1,0.042,0.007,0.068,0.047,-0.036,-0.011,-0.078,0.084,0.033,-0.053,0.011,-0.054],[-0.003,-0.038,-0.045,0.046,-0.102,-0.023,0.163,0.003,0.041,-0.042,-0.026,-0.083,0.078,-0.014,-0.057,-0.018,0.034,0.022,-0.025,-0.026,-0.071,0.043,-0.062,0.067,-0.012,0.032,0.025,-0.009,-0.046,-0.135,0.026,0.067,0.036,-0.041,0.038,-0.023,0.021,0.026,0.025,-0.019,-0.01,-0.081,0.029,0.08,-0.012,-0.001,0.067,-0.012,0.044,-0.042,-0.009,-0.039,-0.065,0.078,0.041,0.087,-0.023,0.046,0.056,-0.025,-0.047,0.068,0.01,0.019,0.0,0.036,-0.061,-0.014,-0.012,-0.019,0.033,0.033,0.023,0.072,0.037,0.016,0.064,0.038,0.129,-0.029,-0.119,-0.086,-0.025,-0.006,-0.011,0.028,-0.016,-0.061,-0.08,0.019,0.026,0.045,0.058,0.002,-0.123,-0.047,-0.0,-0.029,-0.029,0.163,0.016,0.011,-0.031,-0.029,0.05,-0.093,0.036,-0.011,-0.008,0.014,0.003,-0.074,-0.017,0.004,0.039,-0.053,-0.025,0.031,0.047,-0.023,-0.009,0.08,-0.031,-0.049,-0.15,0.012,-0.007,0.0,0.02,-0.068,0.069,0.07,-0.043,0.048,-0.092,-0.012,-0.027,0.017,-0.026,0.008,-0.006,0.02,0.132,0.001,-0.086,-0.017,-0.021,0.039,-0.083,0.04,-0.021,0.122,-0.01,-0.053,0.057,-0.07,-0.041,0.062,0.004,-0.033,-0.041,-0.018,0.008,-0.074,0.024,-0.012,-0.052,-0.039,0.011,-0.062,-0.087,-0.064,0.048,0.061,0.074,0.073,-0.044,0.04,-0.002,-0.034,0.037,0.051,-0.001,-0.005,0.016,0.009,-0.001,0.12,0.061,0.094,0.037,-0.052,-0.037,-0.028,0.016,-0.075,-0.006,-0.128,-0.031,-0.026,0.061,0.017,-0.038,0.021,-0.045,-0.055,-0.066,-0.007,-0.03,-0.019,0.044,-0.018,-0.036,0.04,-0.007,-0.102,0.008,0.049,-0.135,-0.006,0.079,-0.002,-0.039,0.0,0.029,-0.087,-0.023,0.024,-0.036,-0.038,0.027,-0.04,0.064,0.028,-0.056,-0.043,0.044,-0.041,0.033,0.004,0.015,0.007,-0.019,0.056,-0.04,0.012,-0.089,0.063,-0.071,0.088,0.027,0.014,0.09,0.006,0.013,0.017,-0.016,-0.001,-0.082,0.079,0.053,0.0,-0.03,-0.044,-0.061,0.033,-0.03,0.081,0.05,0.013,0.036,0.029,-0.01,0.048,-0.106,-0.021,-0.049,0.043,-0.047,-0.043,-0.037,0.027,0.098,-0.017,0.04,0.024,0.049,0.036,-0.005,-0.005,-0.01,-0.002,-0.05,-0.049,0.105,0.077,-0.073,0.042,0.028,0.074,-0.001,0.002,-0.05,0.087,-0.02,0.029,-0.018,0.066,-0.027,-0.015,0.039,0.031,0.001,-0.055,-0.018,0.021,-0.031,-0.061,0.029,0.0,0.014,0.031,0.003,0.033,0.071,-0.007,0.077,0.067,0.014,0.004,0.055,0.038,-0.009,0.091,0.073,0.028,-0.006,-0.04,-0.008,0.027,0.006,0.0,0.016,-0.056,-0.052,-0.055,-0.032,0.024,0.071,0.023,0.055,0.107,-0.057,-0.124,0.001,0.004,-0.013,0.077,0.02,-0.007,-0.029,-0.037,0.006,-0.052,-0.046,-0.113,0.037,0.002,-0.02,-0.036,-0.059,0.1,0.042,0.007,0.068,0.047,-0.036,-0.011,-0.078,0.084,0.033,-0.053,0.011,-0.054],[-0.009,-0.0,-0.035,-0.002,-0.044,-0.063,0.1,0.03,0.052,-0.06,-0.027,0.012,0.03,-0.04,-0.013,0.023,-0.028,0.015,-0.066,-0.032,0.052,0.028,0.063,0.037,-0.005,-0.024,0.006,0.008,0.014,-0.007,-0.042,-0.018,0.012,-0.061,-0.03,0.004,-0.019,0.003,0.065,0.058,0.004,-0.032,0.023,-0.016,0.03,-0.009,-0.022,-0.026,0.057,-0.013,0.002,0.004,-0.059,-0.047,0.084,0.085,0.048,-0.008,0.11,0.041,-0.018,0.071,-0.022,-0.067,0.015,-0.031,0.037,-0.034,0.032,0.121,0.063,0.003,-0.016,-0.007,0.011,0.093,0.056,-0.054,0.028,0.014,-0.008,-0.102,-0.072,-0.042,0.025,0.005,-0.005,-0.083,-0.008,0.018,-0.076,0.07,0.03,0.003,-0.029,0.021,0.016,0.036,-0.101,0.194,-0.01,-0.014,0.07,-0.004,0.001,-0.087,0.001,-0.0,0.02,0.0,-0.061,-0.108,-0.039,0.068,-0.015,0.033,0.008,0.044,0.016,-0.017,-0.034,-0.018,0.023,-0.018,-0.031,-0.068,0.021,0.0,-0.006,0.032,-0.019,0.019,-0.004,0.063,-0.018,-0.057,0.021,-0.054,-0.047,0.035,-0.113,-0.005,0.065,0.033,-0.018,0.055,-0.033,0.01,-0.095,0.008,0.008,0.053,-0.03,-0.036,0.068,-0.128,-0.011,0.034,-0.022,0.01,-0.012,0.033,-0.016,0.127,0.081,-0.028,-0.07,0.004,-0.067,0.063,-0.056,0.025,-0.014,0.094,-0.012,-0.016,0.065,0.045,0.082,0.001,-0.023,0.014,-0.04,-0.002,0.024,0.001,0.03,0.051,-0.017,-0.071,0.108,-0.028,0.004,-0.048,-0.026,0.041,-0.038,0.05,0.002,-0.027,-0.005,0.019,-0.045,-0.077,-0.16,0.021,0.05,-0.068,0.069,-0.045,0.041,-0.091,-0.024,0.025,-0.052,-0.046,0.066,-0.114,-0.002,0.004,0.063,-0.056,-0.004,0.0,0.071,0.08,0.022,-0.087,-0.02,-0.078,0.002,0.081,-0.038,-0.001,-0.072,0.003,0.014,0.005,0.022,-0.008,0.094,0.011,0.068,-0.013,-0.015,-0.046,0.055,0.013,-0.004,-0.001,-0.015,0.01,-0.014,0.013,-0.036,-0.007,-0.07,-0.061,-0.08,0.018,0.005,-0.001,-0.017,0.027,0.031,-0.023,0.001,0.167,-0.007,-0.031,0.035,0.032,-0.009,0.122,-0.037,-0.032,-0.011,0.018,-0.042,0.051,-0.002,-0.081,0.06,-0.009,0.061,0.065,-0.037,0.076,0.05,0.083,-0.026,0.034,-0.097,-0.016,0.116,0.026,-0.173,0.011,0.051,-0.055,0.013,0.045,-0.017,-0.121,-0.071,-0.025,0.075,-0.031,0.047,0.062,0.05,0.101,-0.036,-0.018,0.051,-0.072,0.004,-0.023,0.019,0.0,-0.024,0.073,0.018,-0.063,0.079,0.012,-0.076,-0.006,-0.009,0.002,-0.025,0.063,-0.011,0.104,0.004,0.025,0.009,-0.071,-0.032,-0.051,-0.096,-0.072,-0.116,-0.06,-0.035,-0.021,0.016,0.045,0.014,0.036,-0.03,0.009,-0.091,-0.045,0.02,-0.105,-0.006,0.046,-0.028,-0.116,-0.078,-0.013,0.019,0.004,-0.05,0.023,0.046,-0.03,-0.021,0.001,0.022,0.02,-0.015,0.059,0.132,0.022,-0.01,-0.003,-0.002,0.021,0.052,-0.023,0.017,0.009],[-0.009,-0.0,-0.035,-0.002,-0.044,-0.063,0.1,0.03,0.052,-0.06,-0.027,0.012,0.03,-0.04,-0.013,0.023,-0.028,0.015,-0.066,-0.032,0.052,0.028,0.063,0.037,-0.005,-0.024,0.006,0.008,0.014,-0.007,-0.042,-0.018,0.012,-0.061,-0.03,0.004,-0.019,0.003,0.065,0.058,0.004,-0.032,0.023,-0.016,0.03,-0.009,-0.022,-0.026,0.057,-0.013,0.002,0.004,-0.059,-0.047,0.084,0.085,0.048,-0.008,0.11,0.041,-0.018,0.071,-0.022,-0.067,0.015,-0.031,0.037,-0.034,0.032,0.121,0.063,0.003,-0.016,-0.007,0.011,0.093,0.056,-0.054,0.028,0.014,-0.008,-0.102,-0.072,-0.042,0.025,0.005,-0.005,-0.083,-0.008,0.018,-0.076,0.07,0.03,0.003,-0.029,0.021,0.016,0.036,-0.101,0.194,-0.01,-0.014,0.07,-0.004,0.001,-0.087,0.001,-0.0,0.02,0.0,-0.061,-0.108,-0.039,0.068,-0.015,0.033,0.008,0.044,0.016,-0.017,-0.034,-0.018,0.023,-0.018,-0.031,-0.068,0.021,0.0,-0.006,0.032,-0.019,0.019,-0.004,0.063,-0.018,-0.057,0.021,-0.054,-0.047,0.035,-0.113,-0.005,0.065,0.033,-0.018,0.055,-0.033,0.01,-0.095,0.008,0.008,0.053,-0.03,-0.036,0.068,-0.128,-0.011,0.034,-0.022,0.01,-0.012,0.033,-0.016,0.127,0.081,-0.028,-0.07,0.004,-0.067,0.063,-0.056,0.025,-0.014,0.094,-0.012,-0.016,0.065,0.045,0.082,0.001,-0.023,0.014,-0.04,-0.002,0.024,0.001,0.03,0.051,-0.017,-0.071,0.108,-0.028,0.004,-0.048,-0.026,0.041,-0.038,0.05,0.002,-0.027,-0.005,0.019,-0.045,-0.077,-0.16,0.021,0.05,-0.068,0.069,-0.045,0.041,-0.091,-0.024,0.025,-0.052,-0.046,0.066,-0.114,-0.002,0.004,0.063,-0.056,-0.004,0.0,0.071,0.08,0.022,-0.087,-0.02,-0.078,0.002,0.081,-0.038,-0.001,-0.072,0.003,0.014,0.005,0.022,-0.008,0.094,0.011,0.068,-0.013,-0.015,-0.046,0.055,0.013,-0.004,-0.001,-0.015,0.01,-0.014,0.013,-0.036,-0.007,-0.07,-0.061,-0.08,0.018,0.005,-0.001,-0.017,0.027,0.031,-0.023,0.001,0.167,-0.007,-0.031,0.035,0.032,-0.009,0.122,-0.037,-0.032,-0.011,0.018,-0.042,0.051,-0.002,-0.081,0.06,-0.009,0.061,0.065,-0.037,0.076,0.05,0.083,-0.026,0.034,-0.097,-0.016,0.116,0.026,-0.173,0.011,0.051,-0.055,0.013,0.045,-0.017,-0.121,-0.071,-0.025,0.075,-0.031,0.047,0.062,0.05,0.101,-0.036,-0.018,0.051,-0.072,0.004,-0.023,0.019,0.0,-0.024,0.073,0.018,-0.063,0.079,0.012,-0.076,-0.006,-0.009,0.002,-0.025,0.063,-0.011,0.104,0.004,0.025,0.009,-0.071,-0.032,-0.051,-0.096,-0.072,-0.116,-0.06,-0.035,-0.021,0.016,0.045,0.014,0.036,-0.03,0.009,-0.091,-0.045,0.02,-0.105,-0.006,0.046,-0.028,-0.116,-0.078,-0.013,0.019,0.004,-0.05,0.023,0.046,-0.03,-0.021,0.001,0.022,0.02,-0.015,0.059,0.132,0.022,-0.01,-0.003,-0.002,0.021,0.052,-0.023,0.017,0.009],[-0.009,-0.0,-0.035,-0.002,-0.044,-0.063,0.1,0.03,0.052,-0.06,-0.027,0.012,0.03,-0.04,-0.013,0.023,-0.028,0.015,-0.066,-0.032,0.052,0.028,0.063,0.037,-0.005,-0.024,0.006,0.008,0.014,-0.007,-0.042,-0.018,0.012,-0.061,-0.03,0.004,-0.019,0.003,0.065,0.058,0.004,-0.032,0.023,-0.016,0.03,-0.009,-0.022,-0.026,0.057,-0.013,0.002,0.004,-0.059,-0.047,0.084,0.085,0.048,-0.008,0.11,0.041,-0.018,0.071,-0.022,-0.067,0.015,-0.031,0.037,-0.034,0.032,0.121,0.063,0.003,-0.016,-0.007,0.011,0.093,0.056,-0.054,0.028,0.014,-0.008,-0.102,-0.072,-0.042,0.025,0.005,-0.005,-0.083,-0.008,0.018,-0.076,0.07,0.03,0.003,-0.029,0.021,0.016,0.036,-0.101,0.194,-0.01,-0.014,0.07,-0.004,0.001,-0.087,0.001,-0.0,0.02,0.0,-0.061,-0.108,-0.039,0.068,-0.015,0.033,0.008,0.044,0.016,-0.017,-0.034,-0.018,0.023,-0.018,-0.031,-0.068,0.021,0.0,-0.006,0.032,-0.019,0.019,-0.004,0.063,-0.018,-0.057,0.021,-0.054,-0.047,0.035,-0.113,-0.005,0.065,0.033,-0.018,0.055,-0.033,0.01,-0.095,0.008,0.008,0.053,-0.03,-0.036,0.068,-0.128,-0.011,0.034,-0.022,0.01,-0.012,0.033,-0.016,0.127,0.081,-0.028,-0.07,0.004,-0.067,0.063,-0.056,0.025,-0.014,0.094,-0.012,-0.016,0.065,0.045,0.082,0.001,-0.023,0.014,-0.04,-0.002,0.024,0.001,0.03,0.051,-0.017,-0.071,0.108,-0.028,0.004,-0.048,-0.026,0.041,-0.038,0.05,0.002,-0.027,-0.005,0.019,-0.045,-0.077,-0.16,0.021,0.05,-0.068,0.069,-0.045,0.041,-0.091,-0.024,0.025,-0.052,-0.046,0.066,-0.114,-0.002,0.004,0.063,-0.056,-0.004,0.0,0.071,0.08,0.022,-0.087,-0.02,-0.078,0.002,0.081,-0.038,-0.001,-0.072,0.003,0.014,0.005,0.022,-0.008,0.094,0.011,0.068,-0.013,-0.015,-0.046,0.055,0.013,-0.004,-0.001,-0.015,0.01,-0.014,0.013,-0.036,-0.007,-0.07,-0.061,-0.08,0.018,0.005,-0.001,-0.017,0.027,0.031,-0.023,0.001,0.167,-0.007,-0.031,0.035,0.032,-0.009,0.122,-0.037,-0.032,-0.011,0.018,-0.042,0.051,-0.002,-0.081,0.06,-0.009,0.061,0.065,-0.037,0.076,0.05,0.083,-0.026,0.034,-0.097,-0.016,0.116,0.026,-0.173,0.011,0.051,-0.055,0.013,0.045,-0.017,-0.121,-0.071,-0.025,0.075,-0.031,0.047,0.062,0.05,0.101,-0.036,-0.018,0.051,-0.072,0.004,-0.023,0.019,0.0,-0.024,0.073,0.018,-0.063,0.079,0.012,-0.076,-0.006,-0.009,0.002,-0.025,0.063,-0.011,0.104,0.004,0.025,0.009,-0.071,-0.032,-0.051,-0.096,-0.072,-0.116,-0.06,-0.035,-0.021,0.016,0.045,0.014,0.036,-0.03,0.009,-0.091,-0.045,0.02,-0.105,-0.006,0.046,-0.028,-0.116,-0.078,-0.013,0.019,0.004,-0.05,0.023,0.046,-0.03,-0.021,0.001,0.022,0.02,-0.015,0.059,0.132,0.022,-0.01,-0.003,-0.002,0.021,0.052,-0.023,0.017,0.009]]
@@ -1 +0,0 @@
1
- You are a test prompt just used for testing.
@@ -1,97 +0,0 @@
1
- require 'spec_helper'
2
-
3
- RSpec.describe Ollama::Documents::MemoryCache do
4
- let :prefix do
5
- 'test-'
6
- end
7
-
8
- let :cache do
9
- described_class.new prefix:
10
- end
11
-
12
- it 'can be instantiated' do
13
- expect(cache).to be_a described_class
14
- end
15
-
16
- it 'can get/set a key' do
17
- key, value = 'foo', { test: true }
18
- expect {
19
- cache[key] = value
20
- }.to change {
21
- cache[key]
22
- }.from(nil).to(value)
23
- end
24
-
25
- it 'can determine if key exists' do
26
- key, value = 'foo', { test: true }
27
- expect {
28
- cache[key] = value
29
- }.to change {
30
- cache.key?(key)
31
- }.from(false).to(true)
32
- end
33
-
34
- it 'can set key with different prefixes' do
35
- key, value = 'foo', { test: true }
36
- expect {
37
- cache[key] = value
38
- }.to change {
39
- cache.size
40
- }.from(0).to(1)
41
- cache2 = cache.dup
42
- cache2.prefix = 'test2-'
43
- expect {
44
- cache2[key] = value
45
- }.to change {
46
- cache2.size
47
- }.from(0).to(1)
48
- expect(cache.size).to eq 1
49
- s = 0
50
- cache.full_each { s += 1 }
51
- expect(s).to eq 2
52
- end
53
-
54
- it 'can delete' do
55
- key, value = 'foo', { test: true }
56
- expect(cache.delete(key)).to be_falsy
57
- cache[key] = value
58
- expect {
59
- expect(cache.delete(key)).to be_truthy
60
- }.to change {
61
- cache.key?(key)
62
- }.from(true).to(false)
63
- end
64
-
65
- it 'can iterate over keys, values' do
66
- key, value = 'foo', { test: true }
67
- cache[key] = value
68
- cache.each do |k, v|
69
- expect(k).to eq prefix + key
70
- expect(v).to eq value
71
- end
72
- end
73
-
74
- it 'returns size' do
75
- key, value = 'foo', { test: true }
76
- expect {
77
- cache[key] = value
78
- }.to change {
79
- cache.size
80
- }.from(0).to(1)
81
- end
82
-
83
- it 'can clear' do
84
- key, value = 'foo', { test: true }
85
- cache[key] = value
86
- expect {
87
- expect(cache.clear).to eq cache
88
- }.to change {
89
- cache.size
90
- }.from(1).to(0)
91
- end
92
-
93
- it 'can iterate over keys under a prefix' do
94
- cache['foo'] = 'bar'
95
- expect(cache.to_a).to eq [ %W[ #{prefix}foo bar ] ]
96
- end
97
- end
@@ -1,118 +0,0 @@
1
- require 'spec_helper'
2
-
3
- RSpec.describe Ollama::Documents::RedisBackedMemoryCache do
4
- let :prefix do
5
- 'test-'
6
- end
7
-
8
- let :cache do
9
- described_class.new prefix: 'test-', url: 'something'
10
- end
11
-
12
- it 'raises ArgumentError if url is missing' do
13
- expect {
14
- described_class.new prefix:, url: nil
15
- }.to raise_error ArgumentError
16
- end
17
-
18
- context 'test redis interactions' do
19
- let :data do
20
- cache.instance_eval { @data }
21
- end
22
-
23
- let :redis_cache do
24
- cache.instance_eval { @redis_cache }
25
- end
26
-
27
- let :redis do
28
- double('Redis')
29
- end
30
-
31
- before do
32
- allow_any_instance_of(Ollama::Documents::RedisCache).to\
33
- receive(:redis).and_return(redis)
34
- allow(redis).to receive(:scan_each)
35
- end
36
-
37
- it 'can be instantiated and initialized' do
38
- expect(cache).to be_a described_class
39
- end
40
-
41
- it 'defaults to nil object_class' do
42
- expect(cache.object_class).to be_nil
43
- end
44
-
45
- it 'can be configured with object_class' do
46
- object_class = Class.new(JSON::GenericObject)
47
- cache = described_class.new(prefix: 'test-', url: 'something', object_class:)
48
- expect(cache.object_class).to eq object_class
49
- end
50
-
51
- it 'has Redis client' do
52
- expect(cache.redis).to eq redis
53
- end
54
-
55
- it 'can get a key' do
56
- key = 'foo'
57
- expect(data).to receive(:[]).with('test-' + key).and_return 666
58
- expect(cache[key]).to eq 666
59
- end
60
-
61
- it 'can set a value for a key' do
62
- key, value = 'foo', { test: true }
63
- expect(data).to receive(:[]=).with('test-' + key, { test: true }).and_call_original
64
- expect(redis).to receive(:set).with('test-' + key, JSON(value))
65
- cache[key] = value
66
- end
67
-
68
- it 'can determine if key exists' do
69
- key = 'foo'
70
- expect(data).to receive(:key?).with('test-' + key).and_return(false, true)
71
- expect(cache.key?('foo')).to eq false
72
- expect(cache.key?('foo')).to eq true
73
- end
74
-
75
- it 'can delete' do
76
- key = 'foo'
77
- expect(data).to receive(:delete).with('test-' + key)
78
- expect(redis).to receive(:del).with('test-' + key)
79
- cache.delete(key)
80
- end
81
-
82
- it 'can iterate over keys, values' do
83
- key, value = 'foo', { 'test' => true }
84
- expect(redis).to receive(:set).with('test-' + key, JSON(value))
85
- cache[key] = value
86
- cache.each do |k, v|
87
- expect(k).to eq prefix + key
88
- expect(v).to eq value
89
- end
90
- end
91
-
92
- it 'returns size' do
93
- expect(cache).to receive(:count).and_return 3
94
- expect(cache.size).to eq 3
95
- end
96
-
97
- it 'can clear' do
98
- expect(redis).to receive(:scan_each).with(match: 'test-*').and_yield(
99
- 'test-foo'
100
- )
101
- expect(redis).to receive(:del).with('test-foo')
102
- expect(cache.clear).to eq cache
103
- end
104
-
105
- it 'can iterate over keys under a prefix' do
106
- data['test-foo'] = 'bar'
107
- expect(cache.to_a).to eq [ %w[ test-foo bar ] ]
108
- end
109
-
110
- it 'can compute prefix with pre' do
111
- expect(cache.pre('foo')).to eq 'test-foo'
112
- end
113
-
114
- it 'can remove prefix with unpre' do
115
- expect(cache.unpre('test-foo')).to eq 'foo'
116
- end
117
- end
118
- end
@@ -1,121 +0,0 @@
1
- require 'spec_helper'
2
-
3
- RSpec.describe Ollama::Documents::RedisCache do
4
- let :prefix do
5
- 'test-'
6
- end
7
-
8
- let :cache do
9
- described_class.new prefix:, url: 'something'
10
- end
11
-
12
- it 'can be instantiated' do
13
- expect(cache).to be_a described_class
14
- end
15
-
16
- it 'defaults to nil object_class' do
17
- expect(cache.object_class).to be_nil
18
- end
19
-
20
- it 'can be configured with object_class' do
21
- object_class = Class.new(JSON::GenericObject)
22
- cache = described_class.new(prefix:, url: 'something', object_class:)
23
- expect(cache.object_class).to eq object_class
24
- end
25
-
26
- it 'raises ArgumentError if url is missing' do
27
- expect {
28
- described_class.new prefix:, url: nil
29
- }.to raise_error ArgumentError
30
- end
31
-
32
- context 'test redis interactions' do
33
- let :redis do
34
- double('Redis')
35
- end
36
-
37
- before do
38
- allow_any_instance_of(described_class).to receive(:redis).and_return(redis)
39
- end
40
-
41
- it 'has Redis client' do
42
- expect(cache.redis).to eq redis
43
- end
44
-
45
- it 'can get a key' do
46
- key = 'foo'
47
- expect(redis).to receive(:get).with(prefix + key).and_return '"some_json"'
48
- expect(cache[key]).to eq 'some_json'
49
- end
50
-
51
- it 'can set a value for a key' do
52
- key, value = 'foo', { test: true }
53
- expect(redis).to receive(:set).with(prefix + key, JSON(value), ex: nil)
54
- cache[key] = value
55
- end
56
-
57
- it 'can set a value for a key with ttl' do
58
- cache = described_class.new prefix:, url: 'something', ex: 3_600
59
- key, value = 'foo', { test: true }
60
- expect(redis).to receive(:set).with(prefix + key, JSON(value), ex: 3_600)
61
- cache[key] = value
62
- expect(redis).to receive(:ttl).with(prefix + key).and_return 3_600
63
- expect(cache.ttl(key)).to eq 3_600
64
- end
65
-
66
- it 'can determine if key exists' do
67
- key = 'foo'
68
- expect(redis).to receive(:exists?).with(prefix + key).and_return(false, true)
69
- expect(cache.key?('foo')).to eq false
70
- expect(cache.key?('foo')).to eq true
71
- end
72
-
73
- it 'can delete' do
74
- key = 'foo'
75
- expect(redis).to receive(:del).with(prefix + key)
76
- cache.delete(key)
77
- end
78
-
79
- it 'can iterate over keys, values' do
80
- key, value = 'foo', { 'test' => true }
81
- expect(redis).to receive(:set).with(prefix + key, JSON(value), ex: nil)
82
- cache[key] = value
83
- expect(redis).to receive(:scan_each).with(match: "#{prefix}*").
84
- and_yield("#{prefix}foo")
85
- expect(redis).to receive(:get).with(prefix + key).and_return(JSON(test: true))
86
- cache.each do |k, v|
87
- expect(k).to eq prefix + key
88
- expect(v).to eq value
89
- end
90
- end
91
-
92
- it 'returns size' do
93
- expect(redis).to receive(:scan_each).with(match: "#{prefix}*").
94
- and_yield("#{prefix}foo").
95
- and_yield("#{prefix}bar").
96
- and_yield("#{prefix}baz")
97
- expect(cache.size).to eq 3
98
- end
99
-
100
- it 'can clear' do
101
- expect(redis).to receive(:scan_each).with(match: 'test-*').and_yield(
102
- 'test-foo'
103
- )
104
- expect(redis).to receive(:del).with('test-foo')
105
- expect(cache.clear).to eq cache
106
- end
107
-
108
- it 'can iterate over keys under a prefix' do
109
- expect(redis).to receive(:scan_each).with(match: 'test-*')
110
- cache.to_a
111
- end
112
-
113
- it 'can compute prefix with pre' do
114
- expect(cache.pre('foo')).to eq 'test-foo'
115
- end
116
-
117
- it 'can remove prefix with unpre' do
118
- expect(cache.unpre('test-foo')).to eq 'foo'
119
- end
120
- end
121
- end
@@ -1,141 +0,0 @@
1
- require 'spec_helper'
2
-
3
- RSpec.describe Ollama::Documents::SQLiteCache do
4
- let :prefix do
5
- 'test-'
6
- end
7
-
8
- let :test_value do
9
- {
10
- key: 'test',
11
- text: 'test text',
12
- norm: 0.5,
13
- source: 'for-test.txt',
14
- tags: %w[ test ],
15
- embedding: [ 0.5 ] * 1_024,
16
- }
17
- end
18
-
19
- let :cache do
20
- described_class.new prefix:
21
- end
22
-
23
- it 'can be instantiated' do
24
- expect(cache).to be_a described_class
25
- end
26
-
27
- it 'defaults to :memory: mode' do
28
- expect(cache.filename).to eq ':memory:'
29
- end
30
-
31
- it 'can be switchted to file mode' do
32
- expect(SQLite3::Database).to receive(:new).with('foo.sqlite').
33
- and_return(double.as_null_object)
34
- cache = described_class.new prefix:, filename: 'foo.sqlite'
35
- expect(cache.filename).to eq 'foo.sqlite'
36
- end
37
-
38
- it 'can get/set a key' do
39
- key, value = 'foo', test_value
40
- queried_value = nil
41
- expect {
42
- cache[key] = value
43
- }.to change {
44
- queried_value = cache[key]
45
- }.from(nil).to(Ollama::Documents::Record[value])
46
- expect(queried_value.embedding).to eq [ 0.5 ] * 1_024
47
- end
48
-
49
- it 'can determine if key exists' do
50
- key, value = 'foo', test_value
51
- expect {
52
- cache[key] = value
53
- }.to change {
54
- cache.key?(key)
55
- }.from(false).to(true)
56
- end
57
-
58
- it 'can set key with different prefixes' do
59
- key, value = 'foo', test_value
60
- expect {
61
- cache[key] = value
62
- }.to change {
63
- cache.size
64
- }.from(0).to(1)
65
- cache2 = cache.dup
66
- cache2.prefix = 'test2-'
67
- expect {
68
- cache2[key] = value
69
- }.to change {
70
- cache2.size
71
- }.from(0).to(1)
72
- expect(cache.size).to eq 1
73
- s = 0
74
- cache.full_each { s += 1 }
75
- expect(s).to eq 2
76
- end
77
-
78
- it 'can delete' do
79
- key, value = 'foo', test_value
80
- expect(cache.delete(key)).to be_falsy
81
- cache[key] = value
82
- expect {
83
- expect(cache.delete(key)).to be_truthy
84
- }.to change {
85
- cache.key?(key)
86
- }.from(true).to(false)
87
- end
88
-
89
- it 'returns size' do
90
- key, value = 'foo', test_value
91
- expect {
92
- cache[key] = value
93
- }.to change {
94
- cache.size
95
- }.from(0).to(1)
96
- end
97
-
98
- it 'can convert_to_vector' do
99
- vector = [ 23.0, 666.0 ]
100
- expect(cache.convert_to_vector(vector)).to eq vector
101
- end
102
-
103
- it 'can clear' do
104
- key, value = 'foo', { embedding: [ 0.5 ] * 1_024 }
105
- cache[key] = value
106
- expect {
107
- expect(cache.clear).to eq cache
108
- }.to change {
109
- cache.size
110
- }.from(1).to(0)
111
- end
112
-
113
- it 'can clear for tags' do
114
- key, value = 'foo', { tags: %w[ foo ], embedding: [ 0.5 ] * 1_024 }
115
- cache[key] = value
116
- key, value = 'bar', { embedding: [ 0.5 ] * 1_024 }
117
- cache[key] = value
118
- expect {
119
- expect(cache.clear_for_tags(%w[ #foo ])).to eq cache
120
- }.to change {
121
- cache.size
122
- }.from(2).to(1)
123
- expect(cache).not_to be_key 'foo'
124
- expect(cache).to be_key 'bar'
125
- end
126
-
127
- it 'can return tags' do
128
- key, value = 'foo', { tags: %w[ foo ], embedding: [ 0.5 ] * 1_024 }
129
- cache[key] = value
130
- key, value = 'bar', { tags: %w[ bar baz ], embedding: [ 0.5 ] * 1_024 }
131
- cache[key] = value
132
- tags = cache.tags
133
- expect(tags).to be_a Ollama::Utils::Tags
134
- expect(tags.to_a).to eq %w[ bar baz foo ]
135
- end
136
-
137
- it 'can iterate over keys under a prefix' do
138
- cache['foo'] = test_value
139
- expect(cache.to_a).to eq [ [ 'test-foo', Ollama::Documents::Record[test_value] ] ]
140
- end
141
- end
@@ -1,110 +0,0 @@
1
- require 'spec_helper'
2
-
3
- RSpec.describe Ollama::Documents::Splitters::Character do
4
- let :splitter do
5
- described_class.new chunk_size: 23, combining_string: ''
6
- end
7
-
8
- it 'can be instantiated' do
9
- expect(splitter).to be_a described_class
10
- end
11
-
12
- it 'can split' do
13
- text = [ ?A * 10 ] * 10 * "\n\n"
14
- result = splitter.split(text)
15
- expect(result.count).to eq 5
16
- expect(result.to_a.join('')).to eq ?A * 100
17
- end
18
-
19
- it 'can split combining with separation' do
20
- splitter = described_class.new chunk_size: 25, include_separator: false,
21
- combining_string: ?X
22
- text = [ ?A * 10 ] * 10 * "\n\n"
23
- result = splitter.split(text)
24
- expect(result.count).to eq 5
25
- expect(result.to_a.join(?B)).to eq\
26
- "AAAAAAAAAAXAAAAAAAAAAXBAAAAAAAAAAAAAAAAAAAAXBAAAAAAAAAAAAAAAAAAAAXB"\
27
- "AAAAAAAAAAAAAAAAAAAAXBAAAAAAAAAAAAAAAAAAAAX"
28
- end
29
-
30
- it 'can split including separator' do
31
- splitter = described_class.new chunk_size: 25, include_separator: true,
32
- combining_string: ''
33
- text = [ ?A * 10 ] * 10 * "\n\n"
34
- result = splitter.split(text)
35
- expect(result.count).to eq 5
36
- expect(result.to_a.join('')).to eq text
37
- end
38
-
39
- it 'cannot split' do
40
- text = [ ?A * 10 ] * 10 * "\n"
41
- result = splitter.split(text)
42
- expect(result.count).to eq 1
43
- expect(result.to_a.join('').count(?A)).to eq text.count(?A)
44
- end
45
-
46
- it 'cannot split2' do
47
- text = ?A * 25
48
- result = splitter.split(text)
49
- expect(result.count).to eq 1
50
- expect(result.to_a.join('')).to eq ?A * 25
51
- end
52
-
53
- it 'can split sentences' do
54
- text = "foo.foo. bar!bar! baz?baz? quux.\nquux."
55
- splitter = described_class.new(separator: /[.!?]\s*(?:\b|\z)/, chunk_size: 2)
56
- result = splitter.split(text)
57
- expect(result.to_a).to eq %w[ foo foo bar bar baz baz quux quux ]
58
- end
59
- end
60
-
61
- RSpec.describe Ollama::Documents::Splitters::RecursiveCharacter do
62
- let :splitter do
63
- described_class.new chunk_size: 23, combining_string: ''
64
- end
65
-
66
- it 'can be instantiated' do
67
- expect(splitter).to be_a described_class
68
- end
69
-
70
- it 'can split' do
71
- text = [ ?A * 10 ] * 10 * "\n\n"
72
- result = splitter.split(text)
73
- expect(result.count).to eq 5
74
- expect(result.to_a.join('')).to eq ?A * 100
75
- end
76
-
77
- it 'cannot split' do
78
- splitter = described_class.new chunk_size: 23, include_separator: true,
79
- separators: described_class::DEFAULT_SEPARATORS[0..-2]
80
- text = ?A * 25
81
- result = splitter.split(text)
82
- expect(result.count).to eq 1
83
- expect(result.to_a.join('')).to eq ?A * 25
84
- end
85
-
86
- it 'can split including separator' do
87
- splitter = described_class.new chunk_size: 25, include_separator: true,
88
- combining_string: ''
89
- text = [ ?A * 10 ] * 10 * "\n\n"
90
- result = splitter.split(text)
91
- expect(result.count).to eq 5
92
- expect(result.to_a.join('')).to eq text
93
- end
94
-
95
- it 'can split single newline as well' do
96
- text = [ ?A * 10 ] * 10 * "\n"
97
- result = splitter.split(text)
98
- expect(result.count).to eq 5
99
- expect(result.to_a.join('')).to eq ?A * 100
100
- end
101
-
102
- it 'can split single newline as well including separator' do
103
- splitter = described_class.new chunk_size: 25, include_separator: true,
104
- combining_string: ''
105
- text = [ ?A * 10 ] * 10 * "\n"
106
- result = splitter.split(text)
107
- expect(result.count).to eq 5
108
- expect(result.to_a.join('')).to eq text
109
- end
110
- end
@@ -1,56 +0,0 @@
1
- require 'spec_helper'
2
-
3
- RSpec.describe Ollama::Documents::Splitters::Semantic do
4
- let :ollama do
5
- double('Ollama::Client')
6
- end
7
-
8
- let :splitter do
9
- described_class.new ollama:, model: 'mxbai-embed-large'
10
- end
11
-
12
- let :embeddings do
13
- JSON(File.read(asset('embeddings.json')))
14
- end
15
-
16
- it 'can be instantiated' do
17
- expect(splitter).to be_a described_class
18
- end
19
-
20
- before do
21
- allow(ollama).to receive(:embed).and_return(double(embeddings:))
22
- end
23
-
24
- it 'can split with breakpoint :percentile' do
25
- text = ([ "A" * 10 ] * 3 + [ "B" * 10 ] * 3 + [ "A" * 10 ] * 3) * ". "
26
- result = splitter.split(text, breakpoint: :percentile, percentile: 75)
27
- expect(result.count).to eq 3
28
- expect(result.to_a.join('').count(?A)).to eq text.count(?A)
29
- expect(result.to_a.join('').count(?B)).to eq text.count(?B)
30
- end
31
-
32
- it 'can split with breakpoint :percentile' do
33
- described_class.new ollama:, model: 'mxbai-embed-large', chunk_size: 50
34
- text = ([ "A" * 10 ] * 6 + [ "B" * 10 ] * 3 + [ "A" * 10 ] * 3) * ". "
35
- result = splitter.split(text, breakpoint: :percentile, percentile: 75)
36
- expect(result.count).to eq 4
37
- expect(result.to_a.join('').count(?A)).to eq text.count(?A)
38
- expect(result.to_a.join('').count(?B)).to eq text.count(?B)
39
- end
40
-
41
- it 'can split with breakpoint :standard_deviation' do
42
- text = ([ "A" * 10 ] * 3 + [ "B" * 10 ] * 3 + [ "A" * 10 ] * 3) * ". "
43
- result = splitter.split(text, breakpoint: :standard_deviation, percentage: 100)
44
- expect(result.count).to eq 3
45
- expect(result.to_a.join('').count(?A)).to eq text.count(?A)
46
- expect(result.to_a.join('').count(?B)).to eq text.count(?B)
47
- end
48
-
49
- it 'can split with breakpoint :interquartile' do
50
- text = ([ "A" * 10 ] * 3 + [ "B" * 10 ] * 3 + [ "A" * 10 ] * 3) * ". "
51
- result = splitter.split(text, breakpoint: :interquartile, percentage: 75)
52
- expect(result.count).to eq 3
53
- expect(result.to_a.join('').count(?A)).to eq text.count(?A)
54
- expect(result.to_a.join('').count(?B)).to eq text.count(?B)
55
- end
56
- end