Skip to content

feat: SmartRAG v1.0.3 Release - Enhanced Semantic Search & Smart Chunking #34

feat: SmartRAG v1.0.3 Release - Enhanced Semantic Search & Smart Chunking

feat: SmartRAG v1.0.3 Release - Enhanced Semantic Search & Smart Chunking #34

Workflow file for this run

name: CI/CD Pipeline
on:
push:
branches: [ main, develop ]
pull_request:
branches: [ main ]
release:
types: [published]
env:
DOTNET_VERSION: '9.0.x'
NUGET_SOURCE: https://api.nuget.org/v3/index.json
GITHUB_PACKAGES_SOURCE: https://nuget.pkg.github.com/byerlikaya/index.json
jobs:
test:
name: Test & Quality
runs-on: ubuntu-latest
permissions:
contents: read
pull-requests: read
steps:
- uses: actions/checkout@v4
- name: Setup .NET
uses: actions/setup-dotnet@v4
with:
dotnet-version: ${{ env.DOTNET_VERSION }}
- name: Restore dependencies
run: dotnet restore
- name: Build
run: dotnet build --configuration Release
- name: Run tests
run: dotnet test --configuration Release --verbosity normal --collect:"XPlat Code Coverage" --logger trx --results-directory ./TestResults
- name: Upload coverage reports to Codecov
uses: codecov/codecov-action@v5
with:
token: ${{ secrets.CODECOV_TOKEN }}
directory: ./TestResults
flags: unittests
name: codecov-umbrella
fail_ci_if_error: false
- name: Run code analysis
run: dotnet build --configuration Release --verbosity quiet
- name: Check for vulnerabilities
run: dotnet list package --vulnerable
build:
name: Build & Package
runs-on: ubuntu-latest
needs: test
if: github.ref == 'refs/heads/main' || github.ref == 'refs/heads/develop'
permissions:
contents: read
pull-requests: read
steps:
- uses: actions/checkout@v4
- name: Setup .NET
uses: actions/setup-dotnet@v4
with:
dotnet-version: ${{ env.DOTNET_VERSION }}
- name: Restore dependencies
run: dotnet restore
- name: Build
run: dotnet build --configuration Release
- name: Pack NuGet packages
run: |
dotnet pack src/SmartRAG/SmartRAG.csproj --configuration Release --output ./nupkgs
- name: Upload artifacts
uses: actions/upload-artifact@v4
with:
name: nuget-packages
path: ./nupkgs/*.nupkg
publish-nuget:
name: Publish to NuGet
runs-on: ubuntu-latest
needs: build
if: github.ref == 'refs/heads/main' && contains(github.event.head_commit.message, '[release]')
permissions:
contents: read
packages: write
steps:
- name: Download artifacts
uses: actions/download-artifact@v4
with:
name: nuget-packages
path: ./nupkgs
- name: Setup .NET
uses: actions/setup-dotnet@v4
with:
dotnet-version: ${{ env.DOTNET_VERSION }}
- name: Publish to NuGet
run: |
for package in ./nupkgs/*.nupkg; do
echo "Publishing $package to NuGet..."
dotnet nuget push "$package" --api-key ${{ secrets.NUGET_API_KEY }} --source ${{ env.NUGET_SOURCE }} --skip-duplicate
done
publish-github-packages:
name: Publish to GitHub Packages
runs-on: ubuntu-latest
needs: build
if: github.ref == 'refs/heads/main' || github.ref == 'refs/heads/develop'
permissions:
contents: read
packages: write
steps:
- name: Download artifacts
uses: actions/download-artifact@v4
with:
name: nuget-packages
path: ./nupkgs
- name: Setup .NET
uses: actions/setup-dotnet@v4
with:
dotnet-version: ${{ env.DOTNET_VERSION }}
- name: Publish to GitHub Packages
run: |
for package in ./nupkgs/*.nupkg; do
echo "Publishing $package to GitHub Packages..."
dotnet nuget push "$package" --api-key ${{ secrets.GITHUB_TOKEN }} --source ${{ env.GITHUB_PACKAGES_SOURCE }} --skip-duplicate
done
create-release:
name: Create GitHub Release
runs-on: ubuntu-latest
needs: [build, publish-nuget]
if: github.ref == 'refs/heads/main' && contains(github.event.head_commit.message, '[release]')
permissions:
contents: write
packages: read
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Download artifacts
uses: actions/download-artifact@v4
with:
name: nuget-packages
path: ./nupkgs
- name: Get version from package
id: get_version
run: |
PACKAGE_VERSION=$(dotnet list package --format json | jq -r '.projects[0].frameworks[].packages[] | select(.id=="SmartRAG") | .resolved')
echo "version=$PACKAGE_VERSION" >> $GITHUB_OUTPUT
echo "Package version: $PACKAGE_VERSION"
- name: Generate changelog
id: changelog
run: |
# Get commits since last release
LAST_TAG=$(git describe --tags --abbrev=0 2>/dev/null || echo "")
if [ -n "$LAST_TAG" ]; then
CHANGELOG=$(git log --pretty=format:"- %s (%an)" ${LAST_TAG}..HEAD | grep -v "Merge pull request" | grep -v "Merge branch")
else
CHANGELOG=$(git log --pretty=format:"- %s (%an)" --oneline -20 | grep -v "Merge pull request" | grep -v "Merge branch")
fi
echo "changelog<<EOF" >> $GITHUB_OUTPUT
echo "$CHANGELOG" >> $GITHUB_OUTPUT
echo "EOF" >> $GITHUB_OUTPUT
- name: Create Release
uses: actions/create-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: v${{ steps.get_version.outputs.version }}
release_name: SmartRAG v${{ steps.get_version.outputs.version }}
body: |
## πŸš€ What's New in v${{ steps.get_version.outputs.version }}
### ✨ Latest Features
- 🧠 **Enhanced Semantic Search** - Advanced hybrid scoring (80% semantic + 20% keyword)
- πŸ” **Smart Document Chunking** - Word boundary validation and optimal break points
- 🧠 **SemanticSearchService** - Dedicated service for semantic relevance scoring
- βš™οΈ **Configuration Binding Fix** - User settings now take absolute priority
- πŸ”§ **Improved Error Handling** - Better logging and retry mechanisms
- πŸ“Š **Performance Optimizations** - Faster chunking and search algorithms
### πŸ”§ Previous Features
- 🧠 **Smart Query Intent Detection** - Automatically routes queries to chat vs document search
- 🌍 **Language-Agnostic Design** - Removed all hardcoded language patterns
- πŸ” **Enhanced Search Relevance** - Improved name detection and content scoring
- πŸ”€ **Unicode Normalization** - Fixed special character handling issues
- ⚑ **Rate Limiting & Retry Logic** - Robust API handling with exponential backoff
- πŸš€ **VoyageAI Integration** - Anthropic embedding support
- πŸ“š **Enhanced Documentation** - Official documentation links
- 🧹 **Configuration Cleanup** - Removed unnecessary fields
- 🎯 **Project Simplification** - Streamlined for better performance
## πŸ“¦ Downloads
- **NuGet Package**: [SmartRAG v${{ steps.get_version.outputs.version }}](https://www.nuget.org/packages/SmartRAG/${{ steps.get_version.outputs.version }})
- **GitHub Packages**: Available in this repository
## πŸš€ Installation
```bash
# NuGet
dotnet add package SmartRAG --version ${{ steps.get_version.outputs.version }}
# GitHub Packages
dotnet add package SmartRAG --version ${{ steps.get_version.outputs.version }} --source https://nuget.pkg.github.com/byerlikaya/index.json
```
## πŸ“ Recent Changes
${{ steps.changelog.outputs.changelog }}
## πŸ”— Links
- πŸ“– [Documentation](https://github.com/byerlikaya/SmartRAG#readme)
- πŸ› [Report Issues](https://github.com/byerlikaya/SmartRAG/issues)
- πŸ’¬ [Discussions](https://github.com/byerlikaya/SmartRAG/discussions)
- πŸ“§ [Contact](mailto:b.yerlikaya@outlook.com)
---
**Built with ❀️ by Barış Yerlikaya** | Made in Turkey πŸ‡ΉπŸ‡·
draft: false
prerelease: false
- name: Upload Release Assets
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: ./nupkgs/*.nupkg
asset_name: SmartRAG.${{ steps.get_version.outputs.version }}.nupkg
asset_content_type: application/octet-stream
security-scan:
name: Security Scan
runs-on: ubuntu-latest
needs: test
if: github.ref == 'refs/heads/main'
permissions:
contents: read
security-events: write
steps:
- uses: actions/checkout@v4
- name: Setup .NET
uses: actions/setup-dotnet@v4
with:
dotnet-version: ${{ env.DOTNET_VERSION }}
- name: Run security scan
run: |
dotnet list package --vulnerable
dotnet outdated --upgrade
- name: Run CodeQL Analysis
uses: github/codeql-action/init@v3
with:
languages: csharp
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v3
dependency-review:
name: Dependency Review
runs-on: ubuntu-latest
if: github.event_name == 'pull_request'
permissions:
contents: read
pull-requests: read
steps:
- name: Checkout Repository
uses: actions/checkout@v4
- name: Dependency Review
uses: actions/dependency-review-action@v4
with:
fail-on-severity: moderate