What is the primary method used to chunk the text in the RAG implementation?	Chunking the text by section.
What is the purpose of Step 2 in the RAG flow?	To create an embedding for each text chunk.
In Step 3, what two elements are zipped together before being inserted into the vector store?	The chunks and their corresponding embeddings.
Why is it necessary to store the original chunk text alongside the embedding in the vector store?	Because the embedding itself is not meaningful to the developer; the text is needed for the final output.
What is generated in Step 4 of the RAG flow?	A user embedding from the input question.
What function is used in Step 5 to find relevant documents in the vector store?	`store.search`.
What two arguments are passed to `store.search` to find the most relevant chunks?	The user embedding and the desired number of chunks (e.g., two).
What metrics are returned by the search results?	The relevant document/chunk and its distance (e.g., cosine distance).
How is the embedding function modified in this implementation?	It can accept either a single string or a list of strings and return a list of embeddings.
What is the role of the vector store in the RAG workflow?	To store the embeddings and associated chunk content, allowing for similarity searches based on a user query.
