From 1b5ac3ed76ae696fe327022c71819910df73254e Mon Sep 17 00:00:00 2001 From: Christopher Creutzig <89011131+ccreutzi@users.noreply.github.com> Date: Tue, 25 Jun 2024 13:36:13 +0100 Subject: [PATCH 1/4] Add Ollama-based RAG example Adapt OpenAI-based RAG example to Ollama. Some minor code improvements carried back into the OpenAI example. --- ...gmentedGenerationUsingChatGPTandMATLAB.mlx | Bin 4911 -> 5733 bytes ...ugmentedGenerationUsingOllamaAndMATLAB.mlx | Bin 0 -> 5810 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 examples/RetrievalAugmentedGenerationUsingOllamaAndMATLAB.mlx diff --git a/examples/RetrievalAugmentedGenerationUsingChatGPTandMATLAB.mlx b/examples/RetrievalAugmentedGenerationUsingChatGPTandMATLAB.mlx index d984df4b439d22b0106f9f62e9c77dc0bd5651dc..9c6d61e5dd6c9fcbcbe3b4d2e1f30a02775f5507 100644 GIT binary patch delta 3995 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 Br;7jp delta 3195 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 Date: Tue, 25 Jun 2024 13:39:24 +0100 Subject: [PATCH 2/4] Include new example in `texampleTests.m` --- tests/texampleTests.m | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/tests/texampleTests.m b/tests/texampleTests.m index de184d3..a9864d1 100644 --- a/tests/texampleTests.m +++ b/tests/texampleTests.m @@ -105,6 +105,10 @@ function testRetrievalAugmentedGenerationUsingChatGPTandMATLAB(~) RetrievalAugmentedGenerationUsingChatGPTandMATLAB; end + function testRetrievalAugmentedGenerationUsingOllamaAndMATLAB(~) + RetrievalAugmentedGenerationUsingOllamaAndMATLAB; + end + function testSummarizeLargeDocumentsUsingChatGPTandMATLAB(~) SummarizeLargeDocumentsUsingChatGPTandMATLAB; end From b7eb3341a0ed1cbf48a34678ae0d4f3ae84eb706 Mon Sep 17 00:00:00 2001 From: Christopher Creutzig <89011131+ccreutzi@users.noreply.github.com> Date: Fri, 5 Jul 2024 14:00:25 +0200 Subject: [PATCH 3/4] Small changes as requested in review --- ...ugmentedGenerationUsingOllamaAndMATLAB.mlx | Bin 5810 -> 5872 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/examples/RetrievalAugmentedGenerationUsingOllamaAndMATLAB.mlx b/examples/RetrievalAugmentedGenerationUsingOllamaAndMATLAB.mlx index 8f9178d826a77c65ecd049458a85e807d75e9623..f033cbf926ac18bcf7bc423a279d575696a45450 100644 GIT binary patch delta 4369 zcmY*dbyO7Y(q3SJB}7_aX`~k(XR0R%0AOWAjAJvxpHbh{lx-uK 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 O!csBe+Ws9a0RIBUxdi_J From 6f79fa2b83c8797c7c96350588a92f5da4960d58 Mon Sep 17 00:00:00 2001 From: Christopher Creutzig <89011131+ccreutzi@users.noreply.github.com> Date: Fri, 5 Jul 2024 14:31:55 +0200 Subject: [PATCH 4/4] Increase TimeOut This example runs into timeouts in GitHub CI. On my dev machine, it returns in a few seconds, but the GitHub VM obviously runs much slower. --- ...ugmentedGenerationUsingOllamaAndMATLAB.mlx | Bin 5872 -> 6103 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/examples/RetrievalAugmentedGenerationUsingOllamaAndMATLAB.mlx b/examples/RetrievalAugmentedGenerationUsingOllamaAndMATLAB.mlx index f033cbf926ac18bcf7bc423a279d575696a45450..c248ba065de7ec7dab65074271a283b1acdb84aa 100644 GIT binary patch delta 4094 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 F003K=QWXFI