namespace AIStudio.Tools.RAG; /// /// The common interface for any retrieval context. /// public interface IRetrievalContext { /// /// The name of the data source. /// /// /// Depending on the configuration, the AI is selecting the appropriate data source. /// In order to inform the user about where the information is coming from, the data /// source name is necessary. /// public string DataSourceName { get; init; } /// /// The category of the content, like e.g., text, audio, image, etc. /// public RetrievalContentCategory Category { get; init; } /// /// What type of content is being retrieved? Like e.g., a project proposal, spreadsheet, art, etc. /// public RetrievalContentType Type { get; init; } /// /// The path to the content, e.g., a URL, a file path, a path in a graph database, etc. /// public string Path { get; init; } /// /// Links to related content, e.g., links to Wikipedia articles, links to sources, etc. /// /// /// Why would you need links for retrieval? You are right that not all retrieval /// contexts need links. But think about a web search feature, where we want to /// query a search engine and get back a list of links to the most relevant /// matches. Think about a continuous web crawler that is constantly looking for /// new information and adding it to the knowledge base. In these cases, links /// are essential. /// public IReadOnlyList Links { get; init; } }