alias BeamWeaver.Core.Document alias BeamWeaver.Core.Message alias BeamWeaver.DocumentIndex alias BeamWeaver.DocumentLoader alias BeamWeaver.DocumentTransformer alias BeamWeaver.Models.FakeEmbeddingModel alias BeamWeaver.Retriever alias BeamWeaver.VectorStore alias BeamWeaver.VectorStore.ETS, as: VectorETS store = VectorETS.new(embedding: %FakeEmbeddingModel{}) index = DocumentIndex.new( loader: DocumentLoader.text("BeamWeaver uses explicit retrievers.", metadata: %{source: "guide"}), transformers: [DocumentTransformer.metadata_map(&Map.put(&1, :tenant, "demo"))], vector_store: store ) {:ok, %{added: 1}} = DocumentIndex.run(index) retriever = VectorStore.as_retriever(store, k: 1) {:ok, [%Document{} = doc]} = Retriever.retrieve(retriever, "retrievers") IO.puts(Message.text(Message.assistant(doc.content)))