From f5ac1724f82eaa8c8c748eda1418343870a1d835 Mon Sep 17 00:00:00 2001 From: leom1919 <1162308169@qq.com> Date: Fri, 30 Oct 2026 21:19:20 +0800 Subject: [PATCH] Docs: fix 9 dead external links across samples, demos and ADR Routine external-link audit found 9 dead links across 6 files. Every old target was verified dead (HTTP 404, or sample removed upstream) and every replacement verified live (HTTP 200) at submission time. Replacements: - Deepgram streaming docs: /docs/streaming -> /docs/live-streaming-audio (sitemap-verified current page) - AssemblyAI streaming docs: /docs/real-time-speech-recognition -> /docs/streaming (sitemap-verified) - A2A protocol: google.github.io/A2A (404) -> a2a-protocol.org/latest/ (project's current official site) - GitHub MCP Server: modelcontextprotocol/servers/src/github (removed upstream) -> github/github-mcp-server (official successor) - csharp-sdk samples: AspNetCoreSseServer (renamed) -> AspNetCoreMcpServer; ProtectedMCPClient -> ProtectedMcpClient (exact path casing) - Pinecone hybrid search: /guides/get-started/key-features#hybrid-search (404) -> /guides/search/hybrid-search - Elastic .NET API docs page (whole /api/ tree removed from elasticsearch-net docs site) -> Elastic reference docs for the text field type This contribution was AI-assisted; all old and new URLs were checked programmatically. --- docs/decisions/0067-hybrid-search.md | 4 ++-- dotnet/samples/Demos/A2AClientServer/README.md | 2 +- .../samples/Demos/ModelContextProtocolClientServer/README.md | 2 +- dotnet/samples/Demos/ModelContextProtocolPluginAuth/README.md | 4 ++-- dotnet/samples/Demos/VoiceChat/README.md | 4 ++-- python/samples/concepts/mcp/README.md | 2 +- 6 files changed, 9 insertions(+), 9 deletions(-) diff --git a/docs/decisions/0067-hybrid-search.md b/docs/decisions/0067-hybrid-search.md index 54df05611ae9..5ba6672913f7 100644 --- a/docs/decisions/0067-hybrid-search.md +++ b/docs/decisions/0067-hybrid-search.md @@ -48,7 +48,7 @@ ML.Net contains an implementation of TF-IDF that could be used to generate spars |Feature|Azure AI Search|Weaviate|Redis|Chroma|Pinecone|PostgreSql|Qdrant|Milvus|Elasticsearch|CosmosDB NoSql|MongoDB| |-|-|-|-|-|-|-|-|-|-|-|-| |Hybrid search supported|Y|Y|N (No parallel execution with fusion)|N|Y|Y|Y|Y|Y|Y|Y| -|Hybrid search definition|Vector + FullText|[Vector + Keyword (BM25F)](https://weaviate.io/developers/weaviate/search/hybrid)|||[Vector + Sparse Vector for keywords](https://docs.pinecone.io/guides/get-started/key-features#hybrid-search)|[Vector + Keyword](https://jkatz05.com/post/postgres/hybrid-search-postgres-pgvector/)|[Vector + SparseVector / Keyword](https://qdrant.tech/documentation/concepts/hybrid-queries/)|[Vector + SparseVector](https://milvus.io/docs/multi-vector-search.md)|Vector + FullText|[Vector + Fulltext (BM25)](https://learn.microsoft.com/en-us/azure/cosmos-db/gen-ai/hybrid-search)|[Vector + FullText](https://www.mongodb.com/docs/atlas/atlas-search/tutorial/hybrid-search)| +|Hybrid search definition|Vector + FullText|[Vector + Keyword (BM25F)](https://weaviate.io/developers/weaviate/search/hybrid)|||[Vector + Sparse Vector for keywords](https://docs.pinecone.io/guides/search/hybrid-search)|[Vector + Keyword](https://jkatz05.com/post/postgres/hybrid-search-postgres-pgvector/)|[Vector + SparseVector / Keyword](https://qdrant.tech/documentation/concepts/hybrid-queries/)|[Vector + SparseVector](https://milvus.io/docs/multi-vector-search.md)|Vector + FullText|[Vector + Fulltext (BM25)](https://learn.microsoft.com/en-us/azure/cosmos-db/gen-ai/hybrid-search)|[Vector + FullText](https://www.mongodb.com/docs/atlas/atlas-search/tutorial/hybrid-search)| |Fusion method configurable|N|Y|||?|Y|Y|Y|Y, but only one option|Y, but only one option|N| |Fusion methods|[RRF](https://learn.microsoft.com/en-us/azure/search/hybrid-search-ranking)|Ranked/RelativeScore|||?|[Build your own](https://jkatz05.com/post/postgres/hybrid-search-postgres-pgvector/)|RRF / DBSF|[RRF / Weighted](https://milvus.io/docs/multi-vector-search.md)|[RRF](https://www.elastic.co/search-labs/tutorials/search-tutorial/vector-search/hybrid-search)|[RRF](https://learn.microsoft.com/en-us/azure/cosmos-db/nosql/query/rrf)|[RRF](https://www.mongodb.com/docs/atlas/atlas-search/tutorial/hybrid-search)| |Hybrid Search Input Params|Vector + string|[Vector + string](https://weaviate.io/developers/weaviate/api/graphql/search-operators#hybrid)|||Vector + SparseVector|Vector + String|[Vector + SparseVector](https://qdrant.tech/documentation/concepts/hybrid-queries/)|[Vector + SparseVector](https://milvus.io/docs/multi-vector-search.md)|Vector + string|Vector + string array|Vector + string| @@ -73,7 +73,7 @@ Cosmos DB NoSQL is the only database from our sample that has a required setting |Feature|Azure AI Search|Weaviate|Redis|Chroma|Pinecone|PostgreSql|Qdrant|Milvus|Elasticsearch|CosmosDB NoSql|MongoDB| |-|-|-|-|-|-|-|-|-|-|-|-| |Requires FullTextSearch indexing for hybrid search|Y|Y|n/a|n/a|n/a|Y|N [optional](https://qdrant.tech/documentation/concepts/filtering/#full-text-match)|n/a|Y|Y|[Y](https://www.mongodb.com/docs/atlas/atlas-search/tutorial/hybrid-search/?msockid=04b550d92f2f619c271a45a42e066050#create-the-atlas-vector-search-and-fts-indexes)| -|Required FullTextSearch index options|None required, [many optional](https://learn.microsoft.com/en-us/rest/api/searchservice/indexes/create?view=rest-searchservice-2024-07-01&tabs=HTTP)|None required, [none optional](https://weaviate.io/developers/weaviate/concepts/indexing#collections-without-indexes)||||[language required](https://jkatz05.com/post/postgres/hybrid-search-postgres-pgvector/)|none required, [some optional](https://qdrant.tech/documentation/concepts/indexing/#full-text-index)||None required, [many optional](https://elastic.github.io/elasticsearch-net/8.16.3/api/Elastic.Clients.Elasticsearch.Mapping.TextProperty.html)|Language Required|None required, [many optional](https://www.mongodb.com/docs/atlas/atlas-search/field-types/string-type/#configure-fts-field-type-field-properties)| +|Required FullTextSearch index options|None required, [many optional](https://learn.microsoft.com/en-us/rest/api/searchservice/indexes/create?view=rest-searchservice-2024-07-01&tabs=HTTP)|None required, [none optional](https://weaviate.io/developers/weaviate/concepts/indexing#collections-without-indexes)||||[language required](https://jkatz05.com/post/postgres/hybrid-search-postgres-pgvector/)|none required, [some optional](https://qdrant.tech/documentation/concepts/indexing/#full-text-index)||None required, [many optional](https://www.elastic.co/guide/en/elasticsearch/reference/current/text.html)|Language Required|None required, [many optional](https://www.mongodb.com/docs/atlas/atlas-search/field-types/string-type/#configure-fts-field-type-field-properties)| ### Keyword Search interface options diff --git a/dotnet/samples/Demos/A2AClientServer/README.md b/dotnet/samples/Demos/A2AClientServer/README.md index 6038a44477f3..dee9ead59f5b 100644 --- a/dotnet/samples/Demos/A2AClientServer/README.md +++ b/dotnet/samples/Demos/A2AClientServer/README.md @@ -1,7 +1,7 @@ # A2A Client and Server samples > **Warning** -> The [A2A protocol](https://google.github.io/A2A/) is still under development and changing fast. +> The [A2A protocol](https://a2a-protocol.org/latest/) is still under development and changing fast. > We will try to keep these samples updated as the protocol evolves. These samples are built with [SharpA2A.Core](https://www.nuget.org/packages/SharpA2A.Core) and demonstrate: diff --git a/dotnet/samples/Demos/ModelContextProtocolClientServer/README.md b/dotnet/samples/Demos/ModelContextProtocolClientServer/README.md index c5fc78a78f95..135bc04350ed 100644 --- a/dotnet/samples/Demos/ModelContextProtocolClientServer/README.md +++ b/dotnet/samples/Demos/ModelContextProtocolClientServer/README.md @@ -114,7 +114,7 @@ The MCP specification supports remote MCP servers. You can find more information [Server-Side Events (SSE)](https://modelcontextprotocol.io/docs/concepts/transports#server-sent-events-sse) and [HTTP with SSE](https://modelcontextprotocol.io/specification/2024-11-05/basic/transports#http-with-sse). The [MCP C# SDK](https://github.com/modelcontextprotocol/csharp-sdk) provides all the necessary components to easily create a remote MCP server. -To get started, follow this sample: [AspNetCoreSseServer](https://github.com/modelcontextprotocol/csharp-sdk/tree/main/samples/AspNetCoreSseServer). +To get started, follow this sample: [AspNetCoreMcpServer](https://github.com/modelcontextprotocol/csharp-sdk/tree/main/samples/AspNetCoreMcpServer). ## Authentication diff --git a/dotnet/samples/Demos/ModelContextProtocolPluginAuth/README.md b/dotnet/samples/Demos/ModelContextProtocolPluginAuth/README.md index 8e8a98858f27..646787a07206 100644 --- a/dotnet/samples/Demos/ModelContextProtocolPluginAuth/README.md +++ b/dotnet/samples/Demos/ModelContextProtocolPluginAuth/README.md @@ -18,8 +18,8 @@ The sample shows: - A self-signed certificate to enable HTTPS use in development, see [dotnet dev-certs](https://learn.microsoft.com/en-us/dotnet/core/tools/dotnet-dev-certs) - .NET 10.0 or later -- A running TestOAuthServer (for OAuth authentication), see [Start the Test OAuth Server](https://github.com/modelcontextprotocol/csharp-sdk/tree/main/samples/ProtectedMCPClient#step-1-start-the-test-oauth-server) -- A running ProtectedMCPServer (for MCP services), see [Start the Protected MCP Server](https://github.com/modelcontextprotocol/csharp-sdk/tree/main/samples/ProtectedMCPClient#step-2-start-the-protected-mcp-server) +- A running TestOAuthServer (for OAuth authentication), see [Start the Test OAuth Server](https://github.com/modelcontextprotocol/csharp-sdk/tree/main/samples/ProtectedMcpClient#step-1-start-the-test-oauth-server) +- A running ProtectedMCPServer (for MCP services), see [Start the Protected MCP Server](https://github.com/modelcontextprotocol/csharp-sdk/tree/main/samples/ProtectedMcpClient#step-2-start-the-protected-mcp-server) ## Configuring Secrets or Environment Variables diff --git a/dotnet/samples/Demos/VoiceChat/README.md b/dotnet/samples/Demos/VoiceChat/README.md index 7ba802dd8472..a85576ed4e38 100644 --- a/dotnet/samples/Demos/VoiceChat/README.md +++ b/dotnet/samples/Demos/VoiceChat/README.md @@ -35,8 +35,8 @@ To reduce latency in real-world scenarios, you can integrate with streaming spee - **Speech-to-Text (STT)** - [OpenAI Realtime API (Whisper streaming)](https://platform.openai.com/docs/guides/realtime) - [Azure Cognitive Services Speech-to-Text](https://learn.microsoft.com/azure/cognitive-services/speech-service/speech-to-text) - - [Deepgram Streaming STT](https://developers.deepgram.com/docs/streaming) - - [AssemblyAI Streaming STT](https://www.assemblyai.com/docs/real-time-speech-recognition) + - [Deepgram Streaming STT](https://developers.deepgram.com/docs/live-streaming-audio) + - [AssemblyAI Streaming STT](https://www.assemblyai.com/docs/streaming) - **Text-to-Speech (TTS)** - [OpenAI Realtime API (TTS streaming)](https://platform.openai.com/docs/guides/realtime) diff --git a/python/samples/concepts/mcp/README.md b/python/samples/concepts/mcp/README.md index a5233fbb2249..4d1aab543045 100644 --- a/python/samples/concepts/mcp/README.md +++ b/python/samples/concepts/mcp/README.md @@ -25,7 +25,7 @@ The reverse, using Semantic Kernel as a server, can be found in the [demos/mcp_s 1. Depending on the sample you want to run: 1. [Docker](https://www.docker.com/products/docker-desktop/) installed, for the samples that use the Github MCP server. 1. [uv](https://docs.astral.sh/uv/getting-started/installation/) installed, for the samples that use the local MCP server. -2. The Github MCP Server uses a Github Personal Access Token (PAT) to authenticate, see [the documentation](https://github.com/modelcontextprotocol/servers/tree/main/src/github) on how to create one. +2. The Github MCP Server uses a Github Personal Access Token (PAT) to authenticate, see [the documentation](https://github.com/github/github-mcp-server) on how to create one. 1. Check the comment at the start of the sample you want to run, for the appropriate environment variables to set. 1. Install Semantic Kernel with the mcp extra: