Folks, I'm getting confused when reading the Composability docs. I have a number of Chroma Collections which I'm loading using a GPTChromaIndex for each index. I'd like to be able to query across all the documents in all indexes, or sometimes maybe the user wants to constrain the search. There will be many documents, perhaps thousands. Where I'm getting confused is -> Do I need to compose a graph? If I do compose a graph, should there be an index per document as in the sample? Chroma is using OpenAI embeddings, it's very good at finding related content... how can I best rely on embedding similarity to find content?